vecotr和list的区别

1、结构
vector是一个顺序结构,是一块连续的内存空间。
list是一个链式结构,许多小块内存通过指针来连接

2、支持操作
vector是连续空间,很好的支持随机访问,iterator支持”+”,”+=”,”<”等操作符
list空间不连续,iterator不支持”+”,”+=”,”<”

3、效率
vector插入删除元素的时候,需要移动大量的元素
list插入删除元素的时候,只需要改变指针的指向

4、使用场景的选择
需要高效的随机存取,而不在乎插入和删除的效率,使用vector
如果需要大量的插入和删除,而不在乎随机存取,使用list

5、vector的限制
vector里存储的都是元素的副本,所以只能存储可拷贝的元素(如unique_ptr就不可存储)
注:C++11支持移动语句,已经可以解决这个问题,如果熟悉这个特性的话,可以和面试官继续探讨,如果不熟悉的话就谈到不能存储防拷贝类型即可。

猜你喜欢

转载自blog.csdn.net/qq_36528114/article/details/79924636