矢量和列表之间的差异

时间:2015-05-28 16:49:46

标签: c++ visual-studio-2012 visual-c++

我正在学习c ++语言,我试图找出vector和list之间的区别。 我正在使用visual studio工具进行编码。有人能解释一下有什么区别吗?

2 个答案:

答案 0 :(得分:7)

vector是一个可调整大小的数组。它的元素在一个连续的内存块中彼此相邻存储,因此可以快速计算每个元素的位置;这称为随机访问。从中间插入和删除元素需要移动所有后面的元素,因此可能相当慢。

list是链接列表。元素分散在内存中,每个元素都有指向下一个元素和前一个元素的指针。你只能通过跟随指针链找到一个元素,这可能相当慢;这称为顺序访问。但是只需修改几个指针即可插入和删除元素,这样可以非常快。

答案 1 :(得分:3)

以下是一些STL容器及其有效性:

  • vector:动态数组 - 随机访问效率高,最后添加/删除。
  • list:双向链表 - 在前进/后退遍历时有效,并可在任何地方插入。
  • forward_list:单链表 - 在正向遍历时有效,并可在任何地方插入。
  • deque:双端队列 - 动态数组,也允许在开头有效添加/删除
  • array:静态数组 - 在编译时修复的大小。