目录
- 顺序容器及其特点
- 顺序容器操作
- 向顺序容器添加元素
- insert
- emplace
- 参考
更新中…
顺序容器及其特点
名字 | 访问元素 | 插入,删除元素 |
---|---|---|
vector(可变大小数组) | 支持快速随机访问 | 在尾部之外的位置插入或删除元素可能很慢 |
deque(双端队列) | 支持快速随机访问 | 在头尾位置插入,删除速度很快 |
list(双向链表) | 支持双向顺序访问 | 在任意位置插入,删除速度很快 |
forward_list(单向链表) | 支持单向顺序访问 | 在任意位置插入,删除速度很快 |
array(固定大小数组) | 支持快速随机访问 | 不能添加,删除元素 |
string(保存字符) | 支持快速随机访问 | 在尾部位置插入,删除速度快 |
- 除 array 外,其余容器可以自动扩张和收缩容器大小
- string 和 vector 将元素保存在连续的内存空间,按下标寻址快,但在中间添加或删除元素慢
- list 和 forward_list 只能通过遍历方式访问元素
顺序容器操作
- 顺序容器操作涉及 4 种动作:存储,访问,添加,删除
向顺序容器添加元素
操作名 | 操作含义 | vector | deque | list | forward_list | array | string | 备注 |
---|---|---|---|---|---|---|---|---|
push_back | 追加元素到容器尾部 | ✅ | ✅ | ✅ | ✅ | - | ||
push_front | 前插元素到容器头部 | ✅ | ✅ | |||||
insert | 任意位置前插 0 个或多个元素 | ✅ | ✅ | ✅ | ✅ | ✅ | forwar_list 提供特殊版本的 insert | |
emplace | 等效于前三个操作,但是它是构造元素,前三个是拷贝元素 | ✅ | ✅ | ✅ | ✅ | ✅ | - |
insert
- 参数:
insert
接受迭代器作为第一个参数 insert
重载之一,在特定位置添加,可以用来替代push_front
操作:iterator insert (const_iterator position, const value_type& val);
insert
重载之二,前插范围内元素:template <class InputIterator>iterator insert (const_iterator position, InputIterator first, InputIterator last);
emplace
emplace
有三个具体的函数用于等效替代push_front
,insert
和push_back
,它们分别是emplace_front
,emplace
,emplace_back
参考
- 《Primer C++》
- cplusplus