1. 顺序容器
这里的“顺序”指的是元素加入容器的顺序
vector 可变大小数组deque (Double Ended QUEue) 双端列表list 双向链表forward_list 单向链表array 固定大小数组string 字符串特化的类似 vector 容器
1.1. vector
| 操作 | 迭代器失效 |
|---|
swap | end() 失效 |
| 容量发生改变 | 全部失效 |
| 擦除元素 | 被擦除元素及其之后的所有元素,包括 end() |
| 插入元素 | 被插入元素及其之后所有元素,包括 end() |
1.2. deque
| 操作 | 迭代器失效 |
|---|
swap | end() 失效 |
| 容量发生改变 | 全部失效 |
| 擦除元素 | 擦除头部则只有头部失效,擦除尾部则尾部和 end() 失效,否则全部失效 |
| 插入元素 | 全部失效,但容器内元素的引用不会失效 |
1.3. list
| 操作 | 迭代器失效 |
|---|
| 插入/删除元素 | 只有被影响的元素的迭代器会失效 |
1.4. forward_list
与 list 一致
1.5. array
复杂度情况与 C array 相同,按照规则不会出现迭代器失效的情况。
1.6. 顺序容器适配器
stack, queue, priority_queue 是三个使用顺序容器的适配器,比如我的 GCC std::stack 和 std::queue 默认使用 deque , priority_queue 默认使用 vector ,也可以像这样指定使用的容器:
1
| std::stack<int, std::vector<int>> s;
|