1.Vector
- 数组的一种类表示。
- 自动内存管理功能,可以动态地改变vector对象的长度。
- 提供对元素的随机访问。
- 在尾部添加删除元素的时间是固定的,但在头部和中部插入删除元素的复杂度为线性时间。
- 可反转容器概念模型,提供rbegin()和rend()。
- 默认使用该类型
2.deque
- 在STL中,实现类似vector容器,支持随机访问。
- 开始位置插入删除的时间是固定的。所以如果多数操作发生在序列的起始和结尾处,应考虑deque。
- 不一定是顺序存储
3.list
- 双向链表
- 任意位置插入删除的时间是固定的
- vector强调的是通过随机访问进行快速访问,list强调的是元素的快速插入和删除
- list模板类有链表专用的成员函数:merge(将两个有序链表合并成另一个有序链表)、remove、sort(使用<运算符排序)、splice(插入)、unique(连续的相同元素压缩成一个)
4.forward_list
5.queue
- 队列
- 限制比deque更多。不允许随机访问,不允许遍历。
- 可以把元素添加到队尾、从队首删除元素、查看队首和队尾的值、检查元素数目和检测队列是否为空
6.priority_queue
- 默认底层类是vector。
- 最大的元素被移到队首,可以修改确定的方式greater()
7.stack
- 栈
- 限制比vector多。不允许随机访问,不允许遍历。
- 可以压入栈顶、从栈顶弹出元素、查看栈顶的值、检查元素数目、检测是否为空
- 可queue相似。如果要使用栈中的值,首先使用top()检索这个值,然后用pop()将他弹出
8.array
- 并非STL容器,因为其长度是固定的。
- 不能调整容器大小,但像vector一样存在安全检索的at()。可以将很多标准STL算法用于他