vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此
它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间
进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新
申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。
list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续
的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它
没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除
和插入。
deque是一个double-ended queue,它的具体实现不太清楚,但知道它具有以下两个特点:
它支持[]操作符,也就是支持随即存取,并且和vector的效率相差无几,它支持在两端的
操作:push_back,push_front,pop_back,pop_front等,并且在两端操作上与list的效率
也差不多。
因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面
的原则:
1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list
3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。
详细解决方案
stl提供了三个最基本的容器:vector,list,deque
热度:1 发布时间:2024-01-19 10:28:39.0
相关解决方案
- request.setAttribute("list" "''");该怎么解决
- Hibernate 的query.list()的有关问题
- List 的removeAll方法如何用
- 关于在struts2中怎么将.action加入到web.xml中的<welcome-file-list>上 急
- 在JSP中,List<String> str_list这个集合如何遍历呢
- 关于<welcome-file-list>的疑问。初学者郁闷哦
- hibernate Query.createQuery(queryString).list();查询最大只有1000条数据,该怎么处理
- 设计可组建的j2me UI(五) List
- JAVA List<Map<String,String>> 排序解决思路
- 关于java List Map方面的简单有关问题
- List<String>取值为什么带“[]”了?解决思路
- java List<>排序有关问题
- Unknown table 'book' in field list
- List<Object> list=new ArrayList<String>()异常
- List<User> userList = new ArrayList<User>();解决思路
- List list = new ArrayList(); 是什么意思?解决思路
- List Control 或者Listbox 中重绘的有关问题
- List Control 报错解决办法
- Vector.clear 的有关问题
- vector push_back出错(release版本),该如何处理
- list<t>解决方法
- List<Translating_model>条件查寻
- MVC 三 传递 List 数据 到 Controller
- List<>问题
- list 便利如何放进string[] 里
- [紧急求答]list.sort排序有关问题 进来看看把
- 小弟我来问个基础有关问题,后台的 List<Entity>怎么绑定到前台
- 没法将类型“System.Data.DataSet”隐式转换为“System.Collections.Generic.List
- list 交换位置,该怎么处理
- List<string>有关问题,求解啊