C++ Primer 学习笔记 0x01

C++ Primer 学习笔记 0x01

RayAlto OP

1. 顺序容器

这里的“顺序”指的是元素加入容器的顺序

  • vector 可变大小数组
  • deque (Double Ended QUEue) 双端列表
  • list 双向链表
  • forward_list 单向链表
  • array 固定大小数组
  • string 字符串特化的类似 vector 容器

1.1. vector

操作复杂度
下标访问
末尾插入/删除
处插入/删除
操作迭代器失效
swapend() 失效
容量发生改变全部失效
擦除元素被擦除元素及其之后的所有元素,包括 end()
插入元素被插入元素及其之后所有元素,包括 end()

1.2. deque

操作复杂度
下标访问
末尾插入/删除
处插入/删除
操作迭代器失效
swapend() 失效
容量发生改变全部失效
擦除元素擦除头部则只有头部失效,擦除尾部则尾部和 end() 失效,否则全部失效
插入元素全部失效,但容器内元素的引用不会失效

1.3. list

操作复杂度
插入/删除
访问第个元素
操作迭代器失效
插入/删除元素只有被影响的元素的迭代器会失效

1.4. forward_list

list 一致

1.5. array

复杂度情况与 C array 相同,按照规则不会出现迭代器失效的情况。

1.6. 顺序容器适配器

stack, queue, priority_queue 是三个使用顺序容器的适配器,比如我的 GCC std::stackstd::queue 默认使用 dequepriority_queue 默认使用 vector ,也可以像这样指定使用的容器:

1
std::stack<int, std::vector<int>> s;