【面试】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
- 【面试】std::vector 和 List 的区别
- std::vector,std::deque,std::list的区别的使用
- std::set, std::list, std::vector在erase的区别
- std::vector<std::string>::size_type和 int的区别
- vector和list的区别
- list和vector的区别
- vector和list的区别
- list和vector的区别
- vector和list 的区别
- vector和list的区别
- ACM-括号配对问题 ASCII码的运用|std::vector/std::list的区别与使用
- std::vector和std::list访问元素的速度真的很慢吗?
- std::vector的reserve和resize的区别
- vector和list的联系和区别
- vector和list的区别和使用
- list和vector区别
- vector和list区别
- vector和list区别
- 对两个整数变量的值进行互换
- 2014-10-16
- MapReduce生成HFile入库到HBase
- 第三章 3.5.1节练习
- leetcode - Length of Last Word
- 【面试】std::vector 和 List 的区别
- UVA10972 - RevolC FaeLoN(双连通分量)
- MySQL主从复制原理以及架构
- DFS 黑白格
- 【移动开发】ViewPager缓存机制
- 01-屏幕监控系统-日报(10月份)
- vc++ 2013 中字符串处理示例
- 如何在 访问控制器 前或后 做一些事
- 怎么使用jquery判断一个元素是否含有一个指定的类(class)