我正在学习c ++语言,我试图找出vector和list之间的区别。 我正在使用visual studio工具进行编码。有人能解释一下有什么区别吗?
答案 0 :(得分:7)
vector
是一个可调整大小的数组。它的元素在一个连续的内存块中彼此相邻存储,因此可以快速计算每个元素的位置;这称为随机访问。从中间插入和删除元素需要移动所有后面的元素,因此可能相当慢。
list
是链接列表。元素分散在内存中,每个元素都有指向下一个元素和前一个元素的指针。你只能通过跟随指针链找到一个元素,这可能相当慢;这称为顺序访问。但是只需修改几个指针即可插入和删除元素,这样可以非常快。
答案 1 :(得分:3)
以下是一些STL容器及其有效性:
vector
:动态数组 - 随机访问效率高,最后添加/删除。list
:双向链表 - 在前进/后退遍历时有效,并可在任何地方插入。forward_list
:单链表 - 在正向遍历时有效,并可在任何地方插入。deque
:双端队列 - 动态数组,也允许在开头有效添加/删除array
:静态数组 - 在编译时修复的大小。