Vector和List的差别
Posted 小羊教你来编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vector和List的差别相关的知识,希望对你有一定的参考价值。
目录:
一.底层结构
Vector :
是一段连续的空间,是一个 动态的顺序表
List :
是带有头结点的 双向循环链表
二.随机访问
Vector :
支持随机访问,在访问某个元素的时候,元素的效率为 O(1)
List :
不支持随机访问,访问某个元素的效率是 O(n)
三.插入/删除
Vector :
1.任意位置插入和删除效率比较低,需要搬移元素,时间复杂度为 O(n)
2.插入时有可能需要增容: 开辟新的空间,拷贝元素,释放旧的空间,导致效率比较低.
List :
1.任意位置插入和删除效率高,不需要搬移元素,直接改变内部的节点就可以了.时间复杂度为 O(1)
四.空间利用率
Vector :
底层为连续的空间,不容易造成内存碎片,空间利用率高,缓存利用率高
List :
底层的节点开辟空间,小的节点容易会造成内存碎片,空间的利用率比较低,缓存利用率低
五.迭代器
Vector :
原生态指针
List :
对原生态指针(节点指针)进行封装
六.迭代器失效
Vector :
在插入元素的时候,要给所有的迭代器进行重新赋值
因为插入元素会造成有可能重新扩容,致使原来的迭代器失效,删除的时候当前的迭代器需要重新赋值,不然就会失效
List :
插入元素的时候不会导致迭代器失效,但是在删除元素的时候会导致当前的迭代器失效,其他的迭代器不受到影响
七.使用场景
Vector :
需要高效的存储,支持随机访问,不关心插入删除效率
List :
大量插入和删除的操作,不关系随机访问
我们可以结合代码来进行实现,大家可以从代码来加深对差别的理解.
以上是关于Vector和List的差别的主要内容,如果未能解决你的问题,请参考以下文章