此部分较为精简,只供面试前联想记忆使用,需要先熟读相关的内容知识才能发挥其作用。推荐书籍《STL源码剖析》(侯捷)。
六大组件及其关系
空间配置器、容器、迭代器、算法、仿函数、适配器内存管理:内存配置和对象构造/析构分开。
使用双层级配置器:第一级直接 malloc,free;第二级内存池(维护 16 个自由链表)迭代器:一种智能指针
Vector: 动态分配的数组,连续线性空间;
维护 3 个迭代器:start,finish,end_of_storage
无备用空间->若为 0,配置为 1,否则配置为 2 倍
需要重新配置、移动数据、释放原空间,所以迭代器失效List:环状的双向链表,尾部有空白节点(为满足左闭右开),节点不保证连续存在,迭代器不失效。内部有一个 last 迭代器指向尾端空白节点(其 next 为 begin 迭代器)。
List 不能使用算法 sort(只接受随机存取迭代器),它有自己内置的 sort。Deque:双向开口的连续线性空间,没有容量概念,动态地以分段连续空间组合而成, 随时可增加新空间并链接起来(伪连续,负担落在迭代器身上)
使用中控器 map,存的指针,指向实际存储块
迭代器失效:
a. 在deque容器首部或者尾部插入元素不会使得任何