STL顺序容器

顺序容器实现能按顺序访问的数据结构。自C++11起,STL提供了五种顺序容器:

名称 描述
array(C++11) 静态的连续数组 (类模板)
vector 动态的连续数组 (类模板)
deque 双端队列 (类模板)
forward_list(C++11 起) 单链表 (类模板)
list 双链表 (类模板)

关于顺序容器的选择

  1. 如果不知道使用什么样的容器,vector是最好的选择,除非特殊的需要有更好的容器替代

  2. 如果程序中的元素很多,但是空间的开销有限制,那么尽量不要使用list和forward_list

  3. 如果元素只在容器的首尾操作,那么选择deque

  4. 关于操作在容器中的中间情况

    1. 先确定是否真的需要插入到中间如果不需要,那么直接添加到vector容器中的尾部
    2. 如果必须要插入到容器的中间,并且该容器访问频繁的话,那么使用list进行操作,之后将list的元素拷贝到vector中
  5. 如果一个容器中既需要访问,也需要操作,那么需要比较访问和操作的频繁程度而定。如果访问更加频繁的话,就是用vector,操作频繁的话就使用链表。这更具具体的项目而定。

就操作而言:

  • 如果你只需要高效的随机存取,使用vector
  • 如果你需要大量的随机插入和删除,应使用list
  • 如果你需要随机存取,而且关心两端数据的插入和删除,应使用deque