STL顺序容器
顺序容器实现能按顺序访问的数据结构。自C++11起,STL提供了五种顺序容器:
名称 | 描述 |
---|---|
array(C++11) | 静态的连续数组 (类模板) |
vector | 动态的连续数组 (类模板) |
deque | 双端队列 (类模板) |
forward_list(C++11 起) | 单链表 (类模板) |
list | 双链表 (类模板) |
关于顺序容器的选择
如果不知道使用什么样的容器,vector是最好的选择,除非特殊的需要有更好的容器替代
如果程序中的元素很多,但是空间的开销有限制,那么尽量不要使用list和forward_list
如果元素只在容器的首尾操作,那么选择deque
关于操作在容器中的中间情况
- 先确定是否真的需要插入到中间如果不需要,那么直接添加到vector容器中的尾部
- 如果必须要插入到容器的中间,并且该容器访问频繁的话,那么使用list进行操作,之后将list的元素拷贝到vector中
- 如果一个容器中既需要访问,也需要操作,那么需要比较访问和操作的频繁程度而定。如果访问更加频繁的话,就是用vector,操作频繁的话就使用链表。这更具具体的项目而定。
就操作而言:
- 如果你只需要高效的随机存取,使用vector
- 如果你需要大量的随机插入和删除,应使用list
- 如果你需要随机存取,而且关心两端数据的插入和删除,应使用deque