【stack】
1.empty() 堆栈为空则返回真
2.pop() 移除栈顶元素
3.push() 在栈顶增加元素
4.size() 返回栈中元素数目
5.top() 返回栈顶元素
【vector】
1.push_back() 在数组的最后添加一个数据
2.pop_back() 去掉数组的最后一个数据
3.at() 得到编号位置的数据
4.begin() 得到数组头的指针
5.end() 得到数组的最后一个单元+1的指针
6.front() 得到数组头的引用
7.back() 得到数组的最后一个单元的引用
8.max_size() 得到vector最大可以是多大
9.capacity() 当前vector分配的大小
10.size() 当前使用数据的大小
11.resize() 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve() 改变当前vecotr所分配空间的大小
13.erase() 删除指针指向的数据项
14.clear() 清空当前的vector
15.rbegin() 将vector反转后的开始指针返回[其实就是原来的end-1]
16.rend() 将vector反转构的结束指针返回[其实就是原来的begin-1]
17.empty() 判断vector是否为空
18.swap() 与另一个vector交换数据
【deque】双端队列,队首队尾都可以入队出队
1.容器大小:deq.size();
2.容器最大容量:deq.max_size();
3.更改容器大小:deq.resize();
4.容器判空:deq.empty();
5.头部添加元素:deq.push_front(const T& x);
6.末尾添加元素:deq.push_back(const T& x);
7.任意位置插入一个元素:deq.insert(iterator it, const T& x);
8.任意位置插入 n 个相同元素:deq.insert(iterator it, int n, const T& x);
9.插入另一个向量的 [forst,last] 间的数据:deq.insert(iterator it, iterator first, iterator last);
10.头部删除元素:deq.pop_front();
11.末尾删除元素:deq.pop_back();
12.任意位置删除一个元素:deq.erase(iterator it);
13.删除 [first,last] 之间的元素:deq.erase(iterator first, iterator last);
14.清空所有元素:deq.clear();
15.下标访问:deq[1];
16.at 方法访问:deq.at(1);
17.访问第一个元素:deq.front();
18.访问最后一个元素:deq.back();
【queue】队列,队首出 队尾入
1.push(x) 将x压入队尾
2.pop() 弹出队列的第一个元素(队头元素),注意此函数并不返回任何值
3.front() 返回第一个元素(队头元素)
4.back() 返回最后被压入的元素(队尾元素)
5.empty() 当队列为空时,返回true
6.size() 返回队列的长度
【priority_queue】优先队列,自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。
定义:priority_queue<Type, Container, Functional>
Type 就是数据类型。
Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector)。
Functional 就是比较的方式。
当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆。
1.top() 访问队头元素
2.empty() 队列是否为空
3.size() 返回队列内元素个数
4.push() 插入元素到队尾 (并排序)
5.emplace() 原地构造一个元素并插入队列
6.pop() 弹出队头元素
7.swap() 交换内容
【map】每个关键字只能在map中出现一次,按关键字字典序排序
1.begin() 返回指向map头部的迭代器
2.clear() 删除所有元素
3.count() 返回指定元素(key)出现的次数(0/1)
4.empty() 如果map为空则返回true
5.end() 返回指向map末尾的迭代器
6.equal_range() 返回特殊条目的迭代器对
7.erase() 删除一个元素
8.find() 查找一个元素 - 返回元素位置指针
9.get_allocator() 返回map的配置器
10.insert() 插入元素
11.key_comp() 返回比较元素key的函数
12.lower_bound() 返回键值>=给定元素的第一个位置
13.max_size() 返回可以容纳的最大元素个数
14.rbegin() 返回一个指向map尾部的逆向迭代器
15.rend() 返回一个指向map头部的逆向迭代器
16.size() 返回map中元素的个数
17.swap() 交换两个map
18.upper_bound() 返回键值>给定元素的第一个位置
19.value_comp() 返回比较元素value的函数
【set】有序去重集合
1.set<int> s 定义一个set容器 类型为int型
2.begin() 返回指向第一个元素的迭代器
3.clear() 清除所有元素
4.count() 返回某个值元素的个数 0/1 次
5.empty() 如果集合为空,返回true
6.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
7.erase() 删除集合中的元素
8.find() 返回一个指向被查找到元素的迭代器,如果没找到则返回end()
9.insert() 在集合中插入元素
10.size() 集合中元素的数目
11.swap() 交换两个集合变量
12.lower_bound() 返回的是第一个不小于给定元素的元素地址
13.upper_bound() 返回的是第一个大于给定元素的元素地址
set基于红黑树实现,红黑树具有自动排序的功能,因此set内部所有的数据,在任何时候,都是有序的。
unordered_set基于哈希表实现,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。
底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。
【string】
1.=,assign 赋以新值
2.Swap 交换两个字符串的内容
3.+ =,append( ),push_back() 添加字符
4.insert () 插入字符
5.erase() 删除字符
6.clear () 移除全部字符
7.resize () 改变字符数量
8.replace() 替换字符
9.+ 串联字符串
10.==,! =,<,<=,>,>=,compare() 比较字符串内容
11.size(),length() 返回字符数量
12.max_size () 返回字符的最大可能个数
13.empty () 判断字符串是否为空
14.capacity () 返回重新分配之前的字符容量
15.reserve() 保留内存以存储一定数量的字符
16.[],at() 存取单一字符
17.>>,getline() 从 stream 中读取某值
18.<< 将值写入 stream
19.copy() 将内容复制为一个 C - string
20.c_str() 将内容以 C - string 形式返回
21.data() 将内容以字符数组形式返回
22.substr() 返回子字符串
23.find() 搜寻某子字符串或字符
24.begin( ),end() 提供正向迭代器支持
25.rbegin(),rend() 提供逆向迭代器支持
【pair】
(1)pair<string,int> p;
p.first="hello";
p.second=3;
(2)pair<int,int> p1(1,2);
(3)pair<string,double> p2;
p2=make_pair("shoes",20.0);
【iterator】
c++ 里面的map容器的迭代器里面 有个first 和 second
map<string, int> m;
m["one"] = 1;
map<string, int>::iterator p = m.begin();
p->first;
p->second;
【bitset】
bitset容器就是装01串的,所以不用在< >中装数据类型,这和一般的STL容器不太一样。< >中装01串的位数。可以被看作是一个bool数组。它比bool数组更优秀的优点是:节约空间,节约时间,支持基本的位运算。在bitset容器中,8位占一个字节,相比于bool数组4位个字节的空间利用率要高很多。同时,n位的bitset在执行一次位运算的复杂度可以被看作是n/32,这都是bool数组所没有的优秀性质。
(1)count() 数出1的个数
(2)any() 检查bitset容器中全0的情况:全0返回false,至少有一个1返回true
(3)none() 检查bitset容器中全0的情况:全0返回true,至少有一个1返回false
(4)set() 把bitset全部元素置为1,set(u,v)把第u位元素变成第v位元素取值(0/1)
(5)reset() 将bitset的所有位置为0,reset(k)把第k位元素变成0
(6)flip() 将整个bitset容器按位取反。flip(k)把第k位元素按位取反
bitset<100000> s; 声明一个100000位的bitset
https://zhuanlan.zhihu.com/p/110326987
https://www.cnblogs.com/linuxAndMcu/p/10260124.html
将一个容器创建为另一个容器的拷贝的方法有两种:
可以直接拷贝整个容器。
拷贝由一个迭代器对指定的元素范围(除 array 外)。