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

来源:互联网 发布:印度为何越界知乎 编辑:程序博客网 时间:2024/04/28 10:53

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

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

 

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

 

附加:

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

 

简单对比:

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

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

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

 

选择的原则:

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

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

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

0 0
原创粉丝点击