`

vector、list、deque区别

 
阅读更多

vector 表示一段连续的内存区域

每个元素被顺序存储在这段内存中对vector的随机访问

比如先访问元素5 然后访问15然后再访问7等等效率很高,

因为每次访问离vector起始处的位移都是固定的。

但是在任意位置而不是在vector末尾插人元素则效率很低 ,

因为它需要把待插入元素右边的每个元素都拷贝一遍。

类似地删除任意一个而不是vector 的最后一个元素效率同样很低。

因为待删除元素右边的每个元素都必须被复制一遍这种代价对于大型的复杂的类对象来说尤其大。

 

deque 一个deque 也表示一段连续的内存区域

但是与vector不同的是它支持高效地在其首部插入和删除元素它通过两级数组结构来实现一级表示实际的容器第二级指向容器的首和尾

 

list List表示非连续的内存区域并通过一对指向首尾元素的指针双向链接起来

从而允许向前和向后两个方向进行遍历在list的任意位置插入和删除元素的效率都很高

指针必须被重新赋值但是不需要用拷贝元素来实现移动

另一方面它对随机访问的支持并不好,访问一个元素需要遍历中间的元素

另外每个元素还有两个指针的额外空间开销

 

 

下面是选择顺序容器类型的一些准则

 

如果我们需要随机访问一个容器则vector要比list好得多 。

如果我们已知要存储元素的个数则vector 又是一个比list好的选择。

如果我们需要的不只是在容器两端插入和删除元素则list显然要比vector好

除非我们需要在容器首部插入和删除元素否则vector要比deque好

 

摘自:http://hi.baidu.com/epeak/blog/item/2f4845388af4792097ddd894.html

分享到:
评论

相关推荐

    STL中vector、list、deque和map的区别

    STL中vector、list、deque和map的区别

    Java 中的vector和list的区别和使用实例详解

    在大家还没有了解vector,list,deque的知识之前,我先给大家介绍下stl,本文重点给大家介绍vector和list的区别及使用,感兴趣的的朋友一起看看吧

    STL范例大全(C++)

    Vector、Deque、List、Set等等,快速学习STL实例 ,迄今为止较好的实例,包括类、结构等作为stl元素

    vector等容器的用法

    容器的各种用法,包括list,deque,vector的用法

    Stl的list容器迭代器的用法1

    和array、vector、deque 容器的迭代器相比,list 容器迭代器最大的不同在于,其配备的迭代器类型为双向迭代器,而不再是随机访问迭代器。值得一提的

    【c++】STL之list用法总结

    list的内部构造完全不同于array,vector或deque。 list就是双向链表。与之相似的forward_list是单向链表,可以理解为forward_list是一个行动受限的list,凡是list没提供的功能,forward_list也不提供,forward_list...

    本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list

    本例程提供了C++的STL常用数据结构及其算法的使用范例,比如vector、string、list、forward_list、deque、queue、stack、map、set、multimap、multiset、tuple、bitset的使用范例,以及algorithm常….zip

    STL容器使用代码

    c++ STL容器使用代码,方便学习 vector string deque queue list set map multiset multimap 容器的API使用方法等

    演示Sequence容器vector

    分别编写程序,演示Sequence容器vector、list、deque的构造、插入、删除、访问、赋值、交换操。用菜单控制演示题目的各个操作,比较每个容器的删除插入等操作的时间差别,了解其内部实现。

    C++STL学习?vector

    容器(Container):是一种数据结构,如list,vector,deque,queue等,以模板类的方法提供,为了访问容器中的数据,可以使用由容器类提供的迭代器。  二。迭代器(Iterator):提供了访问容器中对象的方法。  三...

    vector,map,list,queue的区别详细解析

    1。vector (连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间岁间的插入,删除元素要慢,而且...对deque的排序操作,可将deque先复制到vector,排序后在复制回deque。

    C++标准模板库源代码

    C++标准模板库源代码主要涉及下面几个内容: vector 向量 deque 双端队列 list 链表 map 映射 multiset 多重集合 queue 队列 set 集合 stack 堆栈。

    stl_test:STL中deque、list、vector、stack、map、set、hashmap的基本应用

    stl_test STL中deque、list、vector、stack、map、set、hashmap的基本应用

    C++_STL范例大全_教程

    C++_STL范例大全_教程,主要讲STL的容器部分,对初学者有很大的帮助。里面有源码文件。 Vector、 Deque、List、Set等容器。

    C++STL讲解 PPT版本

    容器(Containers):各种数据结构,如Vector,Deque,List,Set,Map,用来存放数据,STL容器是一种Class Template,就体积而言,这一部分很像冰山载海面的比率。 算法(Algorithms):各种常用算法,如Sort,Search...

    STL模板,常用容器.docx

    容器:各种数据结构,如vector,deque,list,stack,set,map等 (2).算法:各种常用的算法,如sort,find,copy,for_each等 (3).迭代器:用于连接容器和算法,,可初略理解为指针,用法相像 (4).仿函数:行为类似函数,...

    关于STL的erase()陷阱-迭代器失效问题的总结

    STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 1.list,set...

    初学C++时编写的文字游戏

    模拟经营冒险类的文字游戏,主要是对于vector,deque,list3个容器的应用,用在了人物的道具,顾客的排队,顾客订单的添加,很多地方做的不完善也不够简洁,但是内容还是挺多的,有兴趣的可以下了看看,欢迎研究探讨。

    STL源码剖析 中文高清

    高清中文 STL源码剖析 vector,list,deque,stack,queue最全的解析

    STL.rar_stl queue

    STL的Vector、List、deque、set、map、queue、stack等的使用,包含了基本的用法

Global site tag (gtag.js) - Google Analytics