vector和deque区别
来源:互联网 发布:sql美化工具 编辑:程序博客网 时间:2024/06/05 16:21
vector和deque区别
先说句题外话哈:标准的C++头文件都没有.h后缀,有.h的文件是与C兼容的,或支持老的不标准的东西,如<iostream.h>
1、std::vetor
at(n)和operator[](n)都返回下标为n的元素的引用,但是at()进行下标越界检查,若越界,抛出range_error,opteraor[]不进行下标检查。
2、std::deque (double-ended queue),在堆中保存内容,保存形式:
[堆1]
…
[堆2]
…
[堆3]
…
每个堆保存好几个元素,堆和堆之间用指针指向,可以在队列前面快速的添加删除元素
3、vector与deque二者容器的区别
(1、deque访问容器元素的效率比vector容器慢很多;
原因在于deque要跨内存块来访问,而vector只是使用一个内存块,不用跨内存的操作。vector容器相当于一个可以动态分配的数组。
(2、扩充容器容量的方面deque比vector的效率高很多;
deque是申请一个小的内存块,然后把新申请的内存块与其它的deque内存块整合起来。
vector是申请一个比原先更大的新内存块,把原vector里面的数据复制到新的大内存块里面,然后还的销毁原先vector的内存块。所以,在容量扩充方面,deque比vector高效,而且内存利用率也高。
(3、vector不可以收缩,deque自动收缩;
vector不支持把容器的容量调小的操作,小于的情况不会有任何操作。而deque因为它是有很多小内存块的组成的,所以有空闲的内存块时,会销毁空闲的内存块,但不会影响deque里面已有的数据。
vector在默认情况下是典型的使用序列的方法,对于deque,当使用插入删除操作的时候是一个更好的选择
deque比vector增加了两个函数:
(1、c.push_front(elem) —— 在头部插入一个数据。
(2、c.pop_front() —— 删除头部数据。
deque比vector少了两个函数:
(1、capacity()—— 返回vector当前的容量。
(2、reserve() —— 给指定vector的大小。
- vector和deque区别
- vector和deque区别
- list与vector和deque的区别
- list和vector及deque的区别
- vector、list和deque的区别
- deque用法 和与vector的区别
- STL deque、vector和list区别
- vector、list、deque和map的区别
- [C++]vector,list和deque的区别
- Vector , list 和 deque的区别
- vector,deque,list区别
- vector,deque,list区别
- vector、list、deque区别
- vector与deque区别
- vector,deque,list区别
- vector list deque 区别
- vector,list,deque区别
- deque list vector 区别
- lightoj 1022
- 继承ViewGroup重写onMeasure方法的详解
- Unity基础开发----用unity自带Animation组件制作动画
- C++11线程指南(5)--线程的移动语义实现
- URAL1008 - Image Encoding - 广度优先搜索
- vector和deque区别
- 你应该学习的最好的编程语言
- js构造函数写法
- css垂直居中
- lightoj 1023
- Oracle中DECODE函数的用法
- (3)windows下hadoop+eclipse环境搭建
- effective c++ tip3:尽可能使用const
- Codeforces Round #260 (Div. 1) A. Boredom