1. vector1
该模板在vector头文件中声明。vector是数组的一种类表示,它提供了自动内存管理功能,可以动态改变vector对象的长度,并随着元素的添加和删除而增大和缩小。它提供对元素的随机访问。
- 在尾部添加和删除元素的时间是固定的,但在头部或中间插入和删除元素的复杂度为线性时间。
2. deque
deque模板类(在deque头文件中声明)表示双端队列,也支持随机访问。
- 与vector主要区别是,从deque对象的开始位置插入和删除元素的时间是固定的,而不像vector中那样是线性时间的。所以,如果多数操作发生在序列的起始和结尾处,可考虑使用deque数据结构。
3. list
list模板类(在list头文件中声明)表示双向链表。除第一个和最后一个元素外,每个元素都与前后的元素相链接,这以为这可以双向遍历链表。
- list和vector的区别在于,list在链表中任意位置进行插入和删除的时间都是固定的。
因此,vector强调的是通过随机访问进行快速访问,而list强调的是元素的快速插入和删除。 - 与vector不同的是,list不支持数组表示法和随机访问。
详见 线性容器vector的使用。 ↩︎