矢量和列表之间的差异

Alm*_*sić -3 c++ visual-c++ visual-studio-2012

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

Mik*_*our 8

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

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


wco*_*ran 5

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

  • vector动态数组-在随机访问时有效,并在末尾添加/删除。
  • list :双向链表-在向前/向后遍历以及在任何位置插入都有效。
  • forward_list :单链表-在向前遍历和插入任何位置时都很有效。
  • deque :结束队列增加一倍-动态数组也允许在开始时进行有效的添加/删除
  • array :静态数组-大小在编译时固定。