0. 最重要的只有4个容器: vector, deque, list, map
1. STL概念和作用
2. 数组结构和链表结构
数组结构的数据存储在连续存储区,比如数组
链表结构的数据存储在非连续存储区,比如链表
3. 十大容器概述
3.1 容器分类
基本/线性容器: vector, deque, list, 适配/裁剪容器都是他们衍生而来的。
- 线性就是可以从上一个节点找到下一个。
- 向量 vector 中的数据存储区地址连续。
- 列表 list 就是所说的链表,数据存储区地址不连续,不支持下标访问。
适配器容器: stack, queue, priority_queue(把基本容器某些功能屏蔽的产物)
-
堆栈 (stack), 也就是栈,先进后出(只在一端添加和删除元素),可以通过 把双端队列deque的 头部添加/删除操作去掉来实现。
-
队列(queue), 先进先出(尾部添加,头部删除),可以通过把双端队列deque的 头部添加/尾部删除操作 去掉来实现。
-
优先队列(priority_queue)不是先进先出,而是大的先出。
关联容器: map, multimap, set, multiset
- 线性,就是可以通过一个节点找到下一个节点。
3.2 共有特点
- 容器中永远保存的是数据的副本。
- 比如单例对象,就不能放进容器。
4. 迭代器
迭代器按迭代步长分为两种, 按迭代方向也分为两种
十大容器中都各封装了4个迭代类 , 8个迭代对象,
一个迭代类会搞两个对象,iterator 类 对应 begin()/ end()