STL容器
顺序存储结构:vector、list、deque
关联存储结构:set、multiset、map、multimap
deque: double end-queue 双端队列
vector
内存方面:
内存地址连续,相当于一个数组
访问效率方面:
高效随机访问(通过[]访问)
插入删除效率方面:
在尾端效率很高、其他位置效率低下
list
内存方面:
双向链表,非连续内存
访问效率方面:
随机访问效率低下
插入删除效率方面:
随机插入删除效率高
deque
内存方面:
整合vector和list,两级数据结构,第一级为list,list里保存多个vector
访问效率方面:
方面,支持[]访问
插入删除效率方面:
两端插入删除效率高
总结
- 若需要随机访问操作,则选择vector;
- 若已经知道需要存储元素的数目,则选择vector;
- 若需要随机插入/删除(不仅仅在两端),则选择list
- 只有需要在首端进行插入/删除操作的时候,还要兼顾随机访问效率,才选择deque,否则都选择vector。
- 若既需要随机插入/删除,又需要随机访问,则需要在vector与list间做个折中-deque。
- 当要存储的是大型负责类对象时,list要优于vector;当然这时候也可以用vector来存储指向对象的指针,同样会取得较高的效率,但是指针的维护非常容易出错,因此不推荐使用。