1.vector
vector是数组的一种类表示,它提供了自动内存管理功能,可以动态的改变vector对象的长度,并随着元素的添加和删除而增大和缩小,它提供了对元素的随机访问,在尾部添加和删除元素的时间是固定的。但是在头部或者中间插入和删除元素的复杂度是线性时间。(足以说明vector是数组。插入 时间线性。)
2.deque
表示双端队列,类似于vector,支持随机访问。主要区别在于,从deque对象的开始位置和插入和删除元素的时间是固定的,而不像vector那样时间是线性的。如果多数操作发生在序列的起始和结尾,则考虑使用deque。
3.list
list模板类表示双向链表。可以双向遍历,和上面的区别在于:任意位置进行插入和删除的时间都是固定的,list强调的快速插入和删除。
4.queue
queue适配器类,模板让底层类战士典型的队列接口,queue模板的限制比deque更多,它不允许随机访问队列元素,甚至不允许遍历元素。可以将元素添加到队尾、查看队首和队尾的值、检查元素数目和测试队列是否为空。
5.stack
与queue相似,也是适配器类,它给底层类提供典型的堆栈接口,限制比vector多很多,它不仅不允许随机访问堆栈元素,甚至不允许遍历堆栈。可以讲压入推到堆顶、从栈顶弹出元素,查看栈顶的值、检查元素数目和测试堆栈是否为空。
5.联合容器(set、multiset、map、multimap)
联合容器将值和关键字关联在一起吗,使用关键字来查找值。联合容器也允许插入值,不过不能指定元素的插入的位置。原因是联合容器通常包含用于确定数据放置位置的算法,以便能够快速检索信息。
set
其值的类型和关键字相同,关键字是唯一的。
multiset
其值的类型和关键字相同,关键字是不唯一的。
map
值得类型与关键字不同,关键字是唯一的。
multimap
值得类型与关键字不同,关键字是不唯一的。