常用STL容器归纳
常用STL容器归纳
vector容器
1、对象的定义和初始化方式
vector |
v1 是一个元素类型为 T 的空 vector |
---|---|
vector |
使用 v2 中所有元素初始化 v1 |
vector |
同上 |
vector |
v3 中包含了 n 个值为 val 的元素 |
vector |
v3 中包含了 n 个默认值初始化的元素 |
vector |
使用 a, b, c… 初始化 v5 |
vector |
同上 |
vector<vector |
二维数组初始化 |
2、常用基础操作
操作指令 | 时间复杂度 | 作用 |
---|---|---|
v.empty() | O(1) | 如果 v 为空则返回 true,否则返回 false |
v.size() | O(1) | 返回 v 中元素的个数 |
v.push_back(val) | O(1) | 向 vector 的尾端添加值为 val 的元素。 |
v.pop_back() | O(1) | 删除尾元素,返回void。vector同样 不支持 pop_front 操作。若想在同时弹出元素的值,就必须在执行弹出之前保存它(可以使用 v.back())。 |
v.back() | O(1) | 返回 v 中最后一个元素的引用 |
v.front() | O(1) | 返回 v 中第一个元素的引用 |
1、消除相邻的重复元素 unique()
使用到的函数为 unique() :将输入序列相邻的重复项“消除”,返回一个指向不重复值范围末尾的迭代器,一般配合 sort() 使用,函数原型:
举例:
1 |
|
3、特殊方法
1、逆序 reverse()
1 |
|
2、vector 中找最值
1、最大值 auto it = max_element(v.begin, v,end()),返回最大值的迭代器。
2、最小值 auto it = min_element(v.begin, v,end()),返回最小值的迭代器。
1 |
|
如果不确定元素的确定个数,那么 vector 就是最好的选择。
map容器
1、对象的定义和初始化方式
1 |
|
2、常用基础操作
操作指令 | 时间复杂度 | 作用 |
---|---|---|
m.insert(pair<T, T>(111, “kk”)); | O(logN) | 插入pair |
m.insert(map<T,T>:: value_type(val1, val2)); | O(logN) | 插入value_type数据 |
m[123] = “dd” | O(logN) | 数组方式插入 |
m.find(key) | O(logN) | 返回键是key的映射的迭代器 |
m.clear() | O(logN) | 清空 |
m.erase() | O(logN) | 删除一个元素 |
3、特殊方法
。。。。。。。。。装修中(´;ω;)
set容器
1、对象的定义和初始化方式
1 |
|
2、常用基础操作
操作指令 | 时间复杂度 | 作用 |
---|---|---|
s.begin() | O(1) | 返回set容器的第一个元素迭代器 |
s.end() | O(1) | 返回set容器的最后一个元素迭代器 |
s.clear() | O(logN) | 清空 |
s.empty() | O(1) | 判断set容器是否为空 |
s.earse() | O(logN) | 删除一个元素 |
s.size() | O(1) | 返回当前set容器中的元素个数 |
3、特殊方法
1、equal_range()
返回一对定位器,分别表示第一个大于或等于给定关键值的元素和 第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值。
1 |
|
2、erase(first,second)
删除定位器first和second之间的值
1 |
|
multiset容器
multiset是
1、对象的定义和初始化方式
1 |
|
2、常用基础操作
操作指令 | 时间复杂度 | 作用 |
---|---|---|
s.begin() | O(1) | 返回set容器的第一个元素迭代器 |
s.end() | O(1) | 返回set容器的最后一个元素迭代器 |
c.insert(val) | O(logN) | 插入一个val副本,返回新元素位置,无论插入成功与否。 |
c.insert(pos, val) | O(logN) | 安插一个val元素副本,返回新元素位置,pos为收索起点,提升插入速度。 |
s.earse() | O(logN) | 删除一个元素 |
s.size() | O(1) | 返回当前set容器中的元素个数 |
3、特殊方法
。。。。。。。。。装修中(´;ω;)
queue容器
1、对象的定义和初始化方式
1 |
|
2、常用基础操作
操作指令 | 时间复杂度 | 作用 |
---|---|---|
q.push() | O(1) | 在队尾插入一个元素 |
q.pop() | O(1) | 删除队列第一个元素 |
q.front() | O(1) | 返回队列中的第一个元素 |
q.empty() | O(1) | 如果队列空则返回true |
q.back() | O(1) | 返回队列中最后一个元素 |
q.size() | O(1) | 返回队列中元素个数 |
3、特殊方法
。。。。。。。。。装修中(´;ω;)
priority_queue容器
1、对象的定义和初始化方式
1 |
|
2、常用基础操作
操作指令 | 时间复杂度 | 作用 |
---|---|---|
q.push() | O(logN) | 在队尾插入一个元素 |
q.pop() | O(logN) | 删除队列第一个元素 |
q.top() | O(1) | 返回队列中的第一个元素 |
q.empty() | O(1) | 如果队列空则返回true |
q.emplace() | O(logN) | 原地构造一个元素并插入队列 |
q.size() | O(1) | 返回队列中元素个数 |
3、特殊方法
。。。。。。。。。装修中(´;ω;)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 free-9D!