-
vector
动态数组,取代C语言要自己手动申请数组,这是最常用的,在内存存储就是按照顺序的存放,简单就理解为数组,其特点也就是可以高效随机访问。 -
list
双向链表, 就是C语言理解的双向链表,在内存存储是随机存储,以链式结构连接,其特点是可以高效地随机插入 -
deque
双向队列,但是不是数据结构的队列,可以理解为动态数组和双向链表的结合,其有上面两者的特点,但是又没有其各自的高效,其存储结构是先按顺序存储,遇到中间插入、后部内存已占用或者头部插入等就是重新找个地方,继续顺序存储,而各部分链式相连(简单的讲就是找位置先能顺序存放,没位置继续顺序再找个地方继续顺序存放),其特点结合两者。
使用哪个容器合适,就看你的需求:
1.如果有大量的随机访问,而插入和删除操作较少,应该使用vector;
2.如果有大量的插入和删除,而随机访问较少,应该使用list;
3.如果既有很多的插入和删除,又有很多的随机访问,那么deque是个不错的选择。