【面试】std::vector 和 List 的区别

vector 为存储的对象分配一块连续的地址空间,因此对vector 中的元素随机访问效率很高。在vector 中插入或者删除元素,只需要按照索引值,即[] 操作符。

在Vector中插入和删除某个元素,需要将现有元素进行复制,移动。如果Vector中存储的对象很大,或者构造函数复杂,则对现有元素操作拷贝时开销较大,因为拷贝对象要调用构造函数。

 

List是数据结构中的双向链表,因此它的内存空间可以是不连续的通过指针来进行数据的访问,随机访问耨个元素要遍历List。在List中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针

 

附加:

          deque : 它支持[] 操作符,也就是支持随机存取并且和Vector的效率基本相同,他同样支持在两端插入和删除的操作。

 

简单对比:

Vector 适用:对象数量变化少,简单对象,随机访问频繁

List:对象数据变化大,对象复杂,插入和删除频繁

最大区别List是双向的,Vector是单向的。

 

选择的原则:

1:高效率的随机存取,不在乎插入和删除效率。适用Vector

2:适用大量的插入和删除,而不关心随机存取,适用List

3:如果需要随机存取同样也关心两端数据的插入和删除。使用deque

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值