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
特有函数
- 截取
splice
- 删除
remove
- 去重
unique
- 合并
merge
- 排序
reverse
- 反转
sort