vector 为存储的对象分配一块连续的地址空间,因此对vector 中的元素随机访问效率很高。在vector 中插入或者删除元素,只需要按照索引值,即[] 操作符。
在Vector中插入和删除某个元素,需要将现有元素进行复制,移动。如果Vector中存储的对象很大,或者构造函数复杂,则对现有元素操作拷贝时开销较大,因为拷贝对象要调用构造函数。
List是数据结构中的双向链表,因此它的内存空间可以是不连续的通过指针来进行数据的访问,随机访问耨个元素要遍历List。在List中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针
附加:
deque : 它支持[] 操作符,也就是支持随机存取并且和Vector的效率基本相同,他同样支持在两端插入和删除的操作。
简单对比:
Vector 适用:对象数量变化少,简单对象,随机访问频繁
List:对象数据变化大,对象复杂,插入和删除频繁
最大区别List是双向的,Vector是单向的。
选择的原则:
1:高效率的随机存取,不在乎插入和删除效率。适用Vector
2:适用大量的插入和删除,而不关心随机存取,适用List
3:如果需要随机存取同样也关心两端数据的插入和删除。使用deque