deque,list,queue,priority_queue
1.deque
deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector唯一不同的是,deque采用分块的线性存储结构来存
储数据,每块的大小一般为512字节,称为一个deque块,所有的deque使用一个map块进行管理,每个map数据项记录各个
deque块的首地址,这样一来,deque块在头部和尾部都可以插入和删除元素,而不需要移动其它元素,在尾部插入元素使用
push_back(),在头部插入使用push_front(),在中间插入使用insert(),但是在中间插入只是覆盖原来位置的元素,并不会新
增加元素。
而删除元素同样分为头,尾,中,删除头部元素用pop_front(),删除尾部元素用pop_back(),而删除中间的元素就用erase().
2.list
list容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线性表,这样,对链表的任意位置进行插
入,删除和查找都是极快速的。
同样的,往链表的容器中插入元素跟deque一样,也是使用push_back,push_front,insert();
而remove()是删除链表中的一个元素,值相同的都会被删除,pop_front删除头元素,pop_back()删除尾元素,erase()是
删除迭代器位置上的元素。
另外,list还有sort()排序函数,还有unique()方法,可以剔除连续重复元素,只保留一个。
3.stack堆栈容器
这个没有什么好说的,操作主要有:push(),empty(),top()(读取栈顶元素),pop()
4.queue队列容器
也没有什么说的。
5.priority_queue优先队列容器
priority_queue优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素,但是它有一个特性,就是队列中最大的
元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队,这点类似于给队列里的
元素进行了由大到小的顺序排序,默认规则是从小到大,当然,可以重载"<"来重新定义规则。
deque,list,queue,priority_queue的更多相关文章
- stack, deque 和 queue的对比
stack, deque 和 queue这三个c++的STL的数据结构很类似但又各有不同. stack是堆栈,没有迭代器,特点是后进先出.用push()将元素压入栈中,top()返回栈顶元素,pop( ...
- STL总结之queue, priority_queue, stack
之所以把这三个容器放在一起,是因为他们都是容器适配器. STL中queue就是我们常用的FIFO队列,实现是一个容器适配器,这种数据结构在网络中经常使用. queue的模板声明: templa ...
- C++ 顺序容器(vector,list、deque,stack,queue)
顺序容器的种类有:vector,list.deque 顺序容器适配器: stack //先进后出 栈 queue //先进先出 队列 priority_queue //也优先管 ...
- uva 11995 I Can Guess the Data Structure stack,queue,priority_queue
题意:给你n个操做,判断是那种数据结构. #include<iostream> #include<cstdio> #include<cstdlib> #includ ...
- STL之deque、queue、stack、list
首先deque和vector是很像的 但是de代表double双向的队列那么deque可以从首部添加(删除)元素也可以从尾部添加(删除)元素. .push_back(elem) .push_front ...
- Deque 和Queue
概述 接口,一个线性结合,支持在集合首尾add , remove , deque 是double ended queue 的缩写,意味双端队列,接口提供的方法有两种类型,如果失败,一种抛出异常,一种 ...
- C++标准库分析总结(五)——<Deque、Queue、Stack设计原则>
本节主要总结标准库Deque的设计方法和特性以及相关迭代器内部特征 1.Deque基本结构 Deque(双向队列)也号称连续空间(其实是给使用者一个善意的谎言,只是为了好用),其实它使用分段拼接起来的 ...
- deque、queue和stack深度探索(下)
deque如何模拟连续空间?通过源码可以看到这个模型就是通过迭代器来完成. 迭代器通过重载操作符+,-,++,--,*和->来实现deque连续的假象,如上图中的 finish-start ,它 ...
- deque、queue和stack深度探索(上)
deque是可双端扩展的双端队列,蓝色部分就是它的迭代器类,拥有四个指针,第一个cur用来指向当前元素,first指向当前buffer头部,last指向当前buffer尾部,node指向map自己当前 ...
随机推荐
- Heap(data structure)——堆(数据结构)(源自维基百科)
源地址:http://en.wikipedia.org/wiki/Heap_%28data_structure%29 在计算机科学领域,堆是指一个特定的基于数结构的数据结构,其必须满足堆属性: 如果A ...
- Qt读取ANSI格式文件——利用QTextCodec将其他编码格式的QByteArray转换为Unicode格式,或者从文件中读出后直接做转换
t使用Unicode来表示字符串.但是通常需要访问一些非Unicode格式的字符串,例如打开一个GBK编码的中文文本文件,甚至一些非Unicode编码的日文,俄文等. Qt提供了QTextCodec类 ...
- 动态Pivot(1)
原文 http://book.51cto.com/art/200710/58874.htm 7.7 动态Pivot 作为另外一个练习,假设你要编写一个存储过程,它生成动态Pivot查询.这个存储过程 ...
- 减少可执行程序size的三个常用软件
减少可执行程序size的三个常用软件 linux下面,直接用strip 这个命令 #:strip xxx 可以去掉编译调试信息和各种符号表,能够大大减小可执行程序size windows下面这种exe ...
- 基于visual Studio2013解决C语言竞赛题之1017次数
题目 解决代码及点评 /* 功能:有人说在400, 401, 402, ...499这些数中4这个数字共出现112次,请编程序判定这 种说法是否正确.若正确请打印出'YE ...
- linux shell脚本:在脚本中实现读取键盘输入,根据输入判断下一步的分支
echo please input “runbip” to run bip. variableName="null" while [ $variableName != " ...
- javascript模板引擎之artTemplate 学习笔记
<div id="content"></div><div id="content1"></div><h1& ...
- openstack中Nova组件images的全部python API 汇总
感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免.欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- Linux下的链接文件
整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ Linux中的链接文件分为两种:硬链接和软链接.软链接(symbol ...
- 慎得慌二u赫然共和任务i个屁
http://www.huihui.cn/share/8424421 http://www.huihui.cn/share/8424375 http://www.huihui.cn/share/842 ...