c++精进

C++进阶:STL容器总结

2017-07-24  本文已影响0人  jdzhangxin

1.容器简介

1.1 顺序容器(序列容器)Sequence Container

容器 模板 特点
向量容器 vector 从后面快速插入与删除,可以直接访问任何元素。
双向列表容器 list 从任何地方快速插入与删除
双端链表容器 deque 从前面或者后面快速插入与删除,可以直接访问任何元素。

1.2 关联容器Associative Container

容器 模板 特点
映射容器 map 一对多映射,基于关键字快速查找,不允许重复值
多重映射容器 multimap 一对多映射,基于关键字快速查找,允许重复值
集合容器 set 快速查找,不允许重复值
多重集合容器 multiset 快速查找,允许重复值

1.3 容器适配器Container Adapter

容器 模板 特点
栈容器 stack 后进先出(LIFO)
队列容器 queue 先进后出(FIFO)
优先级队列容器 priority_queue 最高优先级元素先出

2. 容器通用操作

2.1 实例化

实例化方式 作用 顺序容器 关联容器 容器适配器
C <T> c 默认构造
C c(c1) 复制构造
C c(it_b,it_e) 范围构造
C c(n,t) 填充构造 × ×
C c(n) 初始化大小 × ×

2.2 重载运算符

运算符 作用 顺序容器 关联容器 容器适配器
= 赋值
== 比较
< 小于

2.3 迭代器

迭代器 作用 顺序容器 关联容器 容器适配器
c.begin() 头迭代器 ×
c.end() 尾迭代器 ×
c.rbegin() 反向头迭代器 ×
c.rend() 反向尾迭代器 ×

2.4 大小

函数 作用 顺序容器 关联容器 容器适配器
c.size() 大小
c.max_size() 最大大小 ×
c.empty() 判空

2.5 插入

函数 返回值 作用 顺序容器 关联容器 容器适配器
c.insert(p,t) iterator 插入一个元素 × ×
c.insert(p,n,t) void 插入n个连续元素 × ×
c.insert(p,it_b,it_e) void 插入范围元素 × ×
c.insert(t) iterator/pair<iterator,bool> 插入元素 × ×
c.insert(it_b,it_e) void 插入范围元素 × ×

2.6 删除

函数 返回值 作用 顺序容器 关联容器 容器适配器
c.erase(p) iterator 删除指定位置元素(注意返回值是iterator) × ×
c.erase(p,q) iterator 删除指定[p,q)范围连续元素(注意返回值是iterator) × ×
c.erase(k) size_type 删除指定键值的元素 × ×
c.erase(p) void 删除指定位置元素(注意返回值是void) × ×
c.erase(p,q) void 删除指定[p,q)范围连续元素(注意返回值是void) × ×
c.clear() void 删除所有元素 ×

3. 容器特有操作

3.1 顺序容器特有函数

函数 返回值 作用 vector list deque
c.front() 元素 获取第一个元素
c.back() 元素 获取最后一个元素
c.push_back(t) void 底部添加一个元素
c.pop_back() void 底部添加一个元素
c.push_front(t) void 头部添加一个元素 ×
c.pop_front() void 头部添加一个元素 ×
c[n]/c.at(n) 元素 随机获取元素 ×
函数 返回值 作用 vector list deque
c.assign(n,t) void 多个连续赋值
c.assign(it_b,it_e) void 范围赋值
c.resize(n) void 大小扩展到n
c.resize(n,t) void 扩展并赋值

3.2 关联容器特有查找函数

函数 返回值 作用 map multimap set multiset
c.find(k) iterator 查找
c.count(k) size_type 统计
c.upper_bound(k) iterator 小于或等于k的第一个元素位置
c.equal_bound(k) pair<iterator,iterator> 等于k的开始和结束位置
c.key_comp() key_compare 键比较
c.value_comp() value_compare 值比较

3.3 容器适配器特有函数

函数 返回值 作用 stack queue priority_queue
c.push(t) void 压入元素
c.pop() void 弹出元素
c.top() 元素 顶部元素 ×
c.front() 元素 头部元素 × ×
c.back() 元素 底部元素 × ×

容器适配器不支持迭代器

3.4 list特有函数

5. 其他

5.1 字符串

string.png

5.2 C++11增加容器



上一篇 下一篇

猜你喜欢

热点阅读