list与vector的区别

二者主要区别在添加元素和访问元素方面:

1. vector为存储的对象分配一块连续的地址空间,和数组有点像。因此对vector中的元素随机访问效率很高。在vecotor中插入或者删除某个元素,需要将现有元素   进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说,效率是很高的。

2. list中的对象是离散存储的,和链表有点像。随机访问某个元素需要遍历list。在list中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针。

个人认为:

  • vector适用于:元素数量少,需要随机访问元素
  • list适用于:元素数量多,需要添加和删除元素
posted on 2011-11-12 18:12  静海  阅读(308)  评论(0编辑  收藏  举报