我是靠谱客的博主 动人大叔,这篇文章主要介绍STL常用容器用法大全前言一、vector:向量二、deque:双端数组三、stack:栈四、queue:队列五、list:链表六、set:集合七、pair:对组八、map:字典,现在分享给大家,希望可以做个参考。
文章目录
- 前言
- 一、vector:向量
- 二、deque:双端数组
- 三、stack:栈
- 四、queue:队列
- 五、list:链表
- 六、set:集合
- 七、pair:对组
- 八、map:字典
前言
整合总结一下C++的STL库中常用的一些容器
一、vector:向量
变长数组,单端数组,要包含头文件vector
- 构造函数
| vector<T> v ; | 默认构造函数,空的 |
|---|---|
| vector<T> v(20); | 初始化20个空间,初始值全0 |
| vector<T> v(n,elem); | 用elem初始化n个空间 |
| vector<T> v(a.begin(),a.end()); | 将a的起始迭代器和中止迭代器之间的内容当v的初始值(包含起始迭代器,不包含终止迭代器) |
| vector<T> v(a); | 拷贝构造 |
- 成员函数
a.赋值
| assign(n,elem) | 将n个elem赋值 |
|---|---|
| assign(beg,end) | 将[beg,end)之间的元素拷贝赋值(迭代器) |
| 重载等号运算符 | vector& operator=(const vector &vec)——v1=v2; |
b.访问
| at(int idx) | 返回索引idx指向的数据 |
|---|---|
| 重载运算符 operator[] | ——像数组一样访问 |
| front() | 返回第一个元素的引用 |
| back() | 返回最后一个元素的引用 |
c.属性
| size() | 返回容器中元素个数 |
|---|---|
| empty() | 判断容器是否为空 |
| capacity() | 返回容器容量 |
| resize(int num) | 改变容量为num |
d.迭代器函数
| begin() | 返回第一个元素的迭代器 |
|---|---|
| end() | 返回最后一个元素后一个位置的迭代器 |
| rbegin() | 返回最后一个元素的逆序迭代器 |
| rend() | 返回第一个元素的前一个位置的逆序迭代器 |
e.操作
| push_back(a) | 把a加入最后 |
|---|---|
| pop_back() | 删除最后一个元素 |
| insert(pos,a) | 向pos迭代器指向的位置插入a |
| insert(pos,a,elem) | 向pos迭代器指向的位置插入a个elem |
| erase(pos) | 删除pos指向的元素 |
| erase(sta,pos) | 删除迭代器sta到pos的元素 |
| clear() | 清空元素 |
| swap(vec) | 实现于vec容器的交换 |
二、deque:双端数组
双端数组,头文件deque
- 构造函数
| deque<T> v ; | 默认构造函数,空的 |
|---|---|
| deque<T> v(20); | 初始化20个空间,初始值全0 |
| deque<T> v(n,elem); | 用elem初始化n个空间 |
| deque<T> v(a.begin(),a.end()); | 将a的起始迭代器和中止迭代器之间的内容当v的初始值(包含起始迭代器,不包含终止迭代器) |
| deque<T> v(a); | 拷贝构造 |
- 成员函数
a.赋值
| assign(n,elem) | 将n个elem赋值 |
|---|---|
| assign(beg,end) | 将[beg,end)之间的元素拷贝赋值(迭代器) |
| 重载等号运算符 | operator= |
b.访问
| at(int idx) | 返回索引idx指向的数据 |
|---|---|
| 重载运算符 operator[] | ——像数组一样访问 |
| front() | 返回第一个元素的引用 |
| back() | 返回最后一个元素的引用 |
c.属性
| size() | 返回容器中元素个数 |
|---|---|
| empty() | 判断容器是否为空 |
| capacity() | 返回容器容量 |
| resize(int num) | 改变容量为num |
d.迭代器函数
| begin() | 返回第一个元素的迭代器 |
|---|---|
| end() | 返回最后一个元素后一个位置的迭代器 |
| rbegin() | 返回最后一个元素的逆序迭代器 |
| rend() | 返回第一个元素的前一个位置的逆序迭代器 |
e.操作
| push_back(elem) | 尾加 |
|---|---|
| push_front(elem) | 头加 |
| pop_back() | 尾删 |
| pop_front() | 头删 |
| insert(pos,a) | 向pos迭代器指向的位置插入a |
| insert(pos,a,elem) | 向pos迭代器指向的位置插入a个elem |
| erase(pos) | 删除pos指向的元素 |
| erase(beg,end) | 清除[beg,end)的内容 |
| clear() | 清空元素 |
三、stack:栈
栈,头文件stack,不允许遍历,只能访问栈顶
- 构造函数
| stack<T> v ; | 默认构造函数,空的 |
|---|---|
| stack<T> v(a); | 拷贝构造 |
- 成员函数
a.操作
| push(elem) | 入栈 |
|---|---|
| pop() | 出栈,删除栈顶元素 |
| top() | 返回栈顶第一个元素的引用; |
b.属性
| size() | 返回容器中元素个数 |
|---|---|
| empty() | 判断容器是否为空 |
四、queue:队列
头文件queue,不可以遍历,只有头尾可以访问
- 构造函数
| queue<T> v ; | 默认构造函数,空的 |
|---|---|
| queue<T> v(a); | 拷贝构造 |
- 成员函数
| push(elem) | 入队 |
|---|---|
| pop() | 出队 |
| back() | 返回最后一个元素 |
| front() | 返回第一个元素 |
| empty() | 是否为空 |
| size() | 队大小 |
五、list:链表
链表,头文件list,STL中是双向循环链表,列表迭代器只能前移和后移,不支持随机访问
- 构造函数
| list<T> v ; | 默认构造函数,空的 |
|---|---|
| list<T> v(20); | 初始化20个空间,初始值全0 |
| list<T> v(n,elem); | 用elem初始化n个空间 |
| list<T> v(a.begin(),a.end()); | 将a的起始迭代器和中止迭代器之间的内容当v的初始值(包含起始迭代器,不包含终止迭代器) |
| list<T> v(a); | 拷贝构造 |
- 成员函数
a.赋值
| assign(n,elem) | 将n个elem赋值 |
|---|---|
| assign(beg,end) | 将[beg,end)之间的元素拷贝赋值(迭代器) |
| 重载等号运算符 | operator= |
b.访问
| front() | 返回第一个元素的引用 |
|---|---|
| back() | 返回最后一个元素的引用 |
c.属性
| size() | 返回容器中元素个数 |
|---|---|
| empty() | 判断容器是否为空 |
| resize(num,elem) | 改变大小为num,多出的用elem填充 |
| resize(int num) | 改变容量为num |
d.迭代器函数
| begin() | 返回第一个元素的迭代器 |
|---|---|
| end() | 返回最后一个元素后一个位置的迭代器 |
| rbegin() | 返回最后一个元素的逆序迭代器 |
| rend() | 返回第一个元素的前一个位置的逆序迭代器 |
e.操作
| push_back(elem) | 尾加 |
|---|---|
| push_front(elem) | 头加 |
| pop_back() | 尾删 |
| pop_front() | 头删 |
| insert(pos,a) | 向pos迭代器指向的位置插入a |
| insert(pos,a,elem) | 向pos迭代器指向的位置插入a个elem |
| insert(pos,beg,end) | 在pos指向的地方插入[beg,end)区间内的内容 |
| erase(pos) | 删除pos指向的元素 |
| erase(beg,end) | 清除[beg,end)的内容 |
| clear() | 清空元素 |
| remove(elem) | 删除所有与elem值匹配的内容 |
| unique() | 删除容器中相邻的重复元素,只留下一个 |
| reverse() | 反转链表 |
| sort(fun) | 排序,默认升序,成员函数(所有不支持随机访问迭代器的容器都不能用标准算法),可用fun指明排序规则 |
六、set:集合
集合,包含头文件set,关联式容器,自动排序,不容许有重复元素
mutiset:可以重复插入数据
- 构造函数
| set<T> v ; | 默认构造函数,空的 |
|---|---|
| set<T> v(a.begin(),a.end()); | 将a的起始迭代器和中止迭代器之间的内容当v的初始值(包含起始迭代器,不包含终止迭代器) |
| set<T> v(a); | 拷贝构造 |
- 成员函数
a.赋值
| 重载等号运算符 | operator= |
|---|
b.访问
| find(key) | 存在,返回指向该元素的迭代器,不存在返回end()迭代器 |
|---|---|
| count(key) | 统计key出现的次数,set只有0、1两种取值,mutiset可以大于1 |
| lower_bound(val) | 返回一个指向当前 set 容器中第一个大于或等于 val 的元素的双向迭代器 |
| upper_bound(val) | 返回一个指向当前 set 容器中第一个大于 val 的元素的迭代器 |
| equal_range(val) | 返回对组,first和second所构成的区间值为val |
c.属性
| size() | 返回容器中元素个数 |
|---|---|
| empty() | 判断容器是否为空 |
d.迭代器函数
| begin() | 返回第一个元素的迭代器 |
|---|---|
| end() | 返回最后一个元素后一个位置的迭代器 |
| rbegin() | 返回最后一个元素的逆序迭代器 |
| rend() | 返回第一个元素的前一个位置的逆序迭代器 |
e.操作
| insert(elem) | 插入elem元素,返回是否成功 |
|---|---|
| erase(pos) | 删除pos指向的元素 |
| erase(beg,end) | 清除[beg,end)的内容 |
| erase(elem) | 删除值为elem的元素 |
| clear() | 清空元素 |
七、pair:对组
对组,不用包含头文件,把两个元素捆绑为对组。
- 构造函数
| pair<T1,T2> p(V1,V2); | V1为first,V2为second |
|---|---|
| pair<T1,T2> p = make_pair(V1,V2); |
- 访问
p.first——第一个元素
p.second——第二个元素
八、map:字典
字典,头文件map,所存的元素为pair,所有元素按键值排序,键值不能重复
mutimap:key可以重复
- 构造函数
| map<T1,T2> v ; | 默认构造函数,空的 |
|---|---|
| map<T1,T2> v(a); | 拷贝构造 |
- 成员函数
a.赋值
| 重载等号运算符 | operator= |
|---|
b.访问
| find(key) | 返回指向key键的元素迭代器,没有返回end() |
|---|---|
| count(key) | 统计key个数 |
| operator[] | 重载[]运算符,通过key索引查找value,key不存在会新建添加 |
| lower_bound(val) | 返回一个指向当前 map 容器中key第一个小于或等于 val 的元素的双向迭代器 |
| upper_bound(val) | 返回一个指向当前map 容器中key第一个大于 val 的元素的迭代器 |
| equal_range(val) | 返回对组,first和second所构成的区间值为val |
c.属性
| size() | 返回容器中元素个数 |
|---|---|
| empty() | 判断容器是否为空 |
d.迭代器函数
| begin() | 返回第一个元素的迭代器 |
|---|---|
| end() | 返回最后一个元素后一个位置的迭代器 |
| rbegin() | 返回最后一个元素的逆序迭代器 |
| rend() | 返回第一个元素的前一个位置的逆序迭代器 |
e.操作
| insert(elem) | 插入elem元素,返回是否成功 |
|---|---|
| erase(pos) | 删除pos指向的元素 |
| erase(beg,end) | 清除[beg,end)的内容 |
| erase(elem) | 删除值为elem的元素 |
| clear() | 清空元素 |
最后
以上就是动人大叔最近收集整理的关于STL常用容器用法大全前言一、vector:向量二、deque:双端数组三、stack:栈四、queue:队列五、list:链表六、set:集合七、pair:对组八、map:字典的全部内容,更多相关STL常用容器用法大全前言一、vector内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复