【ACM非算法部分】STL汇总
stackqueuepriority_queuemapsetpair
======================================
stack:(栈)
包含:#include<stack>
定义:stack<value_type> S;
入栈:void push(const value_type& x) 如:S.push(i);
出栈:void pop()
取栈顶:value_type& top() 要注意的是,pop函数没有返回值,不能接收出栈的元素。要接收,要在pop之前使用top函数。
判栈空:bool empty() 返回 true 表示堆栈已空,false 表示堆栈非空。 如:if(!S.empty()){}
栈的大小:size_type size() 返回栈内元素的个数。
======================================
queue:(队列)
包含:#include<queue>
定义:queue<value_type> Q;
入队:void push(const value_type& x) 如:Q.push(i);
出队:void pop()
取队头:value_type& front()
取队尾:value_type& back()
判队空:bool empty() 返回 true 表示队已空,false 表示队非空。
队的大小:size_type size() 返回元素的个数。
======================================
priority_queue:(优先队列)
包含:#include<queue>
定义:priority_queue<value_type> Q;
入队:void push(const value_type& x) 如:Q.push(i);
出队:void pop()
取队头:value_top& top()
判队空:bool empty() 返回 true 表示队已空,false 表示队非空。
队的大小:size_type size() 返回元素的个数。
这个是大顶堆。
如果优先队列的元素类型是结构体,可以通过在结构体中重载“<“操作符的方法来修改优先队列的优先性。
如:bool operator<(const value_type &a) const;//重载小于号
======================================
map:(映射)
包含:#include<map>
定义:map<int,string> M;
插入元素:
M.insert(map<int,string>::value_type(2,”two”));//不覆盖
M[2]=”two”;//覆盖
判断元素存在:M.count(2)!=0//值为0表示不存在
M.find(2)!=M.end()//成立表示存在。效率高于上一条
查找元素:
M[2];//要先判断元素是否存在,返回存储的数据,若不存在会创建一个
M.find(2);//返回iterator类型,指向查找到的元素,若返回值等于M.end(),说明元素不存在。
删除元素:M.erase(2);//删除关键码为2的元素
iterator erase(iterator it); //通过一个条目对象删除
第一个元素:M.begin();
最后一个元素:M.end();
全部元素的遍历:
map<string,string>::iterator it;
for(it=M.begin();it!=M.end();it++)
cout<<it->second<<endl;
it->first代表关键码,it->second代表存储的数据
======================================
set:(集合)
包含:#include<set>
定义:set<int> s;
插入元素:s.insert(1);
判断元素存在:s.count(1)!=0 //存在 也可以用s.find(1)!=s.end();效率较高
删除元素:s.erase(1);
清空所有元素:s.clear();
查找元素:s.find(1); //返回迭代器iterator
======================================
pair:
包含:#include<utility> 且 algorithm 和 map 也包含了这个头文件
定义:pair<int,int> p;
首元素:p.first
次元素:p.second
默认小于符:p1<p2 等价于 p1.first < p2.first || ( !(p1.first < p2.first) && p1.second < p2.second)
因此,组成pair的两种类型必须已经重载了小于号。
(还有其他。。。)
【ACM非算法部分】STL汇总的更多相关文章
- 【ACM非算法部分】综合篇
从零开始系列,也为了更好的补缺补漏. ===================== 目录: scanf()函数 STL汇总 读入优化 =====================
- 【ACM非算法部分】scanf()函数
scanf函数 格式说明符: %c 字符型 %d 十进制数 %i 读入十进制,八进制,十六进制数.输入的时候正常是十进制数,若输入0前缀的数将读入八进制,0x前缀读入16进制.若输 ...
- 【ACM非算法部分】读入优化
今天做了ACdream的比赛才知道原来还有读入优化这一说.Orz 读入一个整数的时候这么写: int a; scanf("%d",&a); 和 int a; char c; ...
- ACM常用算法及练习(1)
ACM常用算法及练习 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短 ...
- ACM常用算法及练习(2)
ACM常用算法及练习 知识类型 重要度 容易度 应掌握度 典型题 其他 数据结构(5) 链表 ★★☆ ★★★ ★★☆ 栈 stack ★★★ ★★★ ★★★ HLoj120 ...
- ACM主要算法
ACM主要算法ACM主要算法介绍 初期篇 一.基本算法(1)枚举(poj1753, poj2965)(2)贪心(poj1328, poj2109, poj2586)(3)递归和分治法(4)递推(5)构 ...
- 基于OpenSLL的RSA加密应用(非算法)
基于OpenSLL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
- acm常见算法及例题
转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题 初期:一.基本算法: (1)枚举. (poj17 ...
- 基于OpenSSL的RSA加密应用(非算法)
基于OpenSSL的RSA加密应用(非算法) iOS开发中的小伙伴应该是经常用der和p12进行加密解密,而且在通常加密不止一种加密算法,还可以加点儿盐吧~本文章主要阐述的是在iOS中基于openSL ...
随机推荐
- CodeForces - 987E Petr and Permutations (思维+逆序对)
题意:初始有一个序列[1,2,...N],一次操作可以将任意两个位置的值互换,Petr做3*n次操作:Alxe做7*n+1次操作.给出最后生成的新序列,问是由谁操作得到的. 分析:一个序列的状态可以归 ...
- Silverlight中获取控件中子控件
如题:,直接来看代码: /// <summary> /// 查找并返回第一个 相同 name的子元素 /// </summary> /// <typeparam name ...
- 【Flask】Flask Cookie操作
### 什么是cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第 ...
- anacoda的spyder在调用matplotlib的时候无法显示动画效果【学习笔记】
ipython console的默认设置将图像结果显示在终端,但是这样显示存在的问题是无法显示动画效果,因此需要将动画效果显示到单独的窗口,按照下面的截图即可显示. 方法一.按照如下截图显示设置,重启 ...
- 标记语言XML
标记语言概述 标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码.一部分是标记,一部分是标记中的内容,两部分构成标记语言 <标记 ...
- JAVA实现IP地址解析
转载至:http://blog.csdn.net/dragontang/article/details/4151660 http://www.iteye.com/topic/340548#
- PAT1076. Forwards on Weibo (30)
使用DFS出现超时,改成bfs DFS #include <iostream> #include <vector> #include <set> using nam ...
- Java通过JDBC操作Hive
http://www.cnblogs.com/netbloomy/p/6688670.html 0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hiv ...
- java手动分页处理
经常我们在操作数据库的时候都会用到分页,而且很多框架也提供了分页功能,像PageHelper. 但是在有些项目中,需要将数据查询出来进行手动分页,那么原理是什么呢? 其实很简单,首先需要知道数据总量, ...
- 使用TypeScript拓展你自己的VSCode
转自:http://www.iplaysoft.com/brackets.html使用TypeScript拓展你自己的VSCode! 0x00 前言在前几天的美国纽约,微软举行了Connect(); ...