deque双端队列容器与vector很类似,采用线性表顺序存储结构。但与vector区别,deque采用分块的线性存储结构来存储数据,每块的大小一般为512B,将之称为deque块,所有的deque块使用一个map块进行管理,每个map数据项记录各个deque块的首地址,这样的话,deque块在头部和尾部都可以插入和删除。而不需要移动任何元素,而不需要移动其他元素(使用push_back()方法在尾部插入元素,会扩张队列,而使用push_front()方法在首部插入元素和使用insert()方法在中间插入元素,只是将原位置上的元素进行覆盖,不会增加新元素)一般来说,当考虑到容器元素的内存分配策略和操作的性能时deque相当于vector更有优势。

*创建deque对象
与vector类似

*插入元素
使用push_back()方法从尾部插入元素,会不断扩张队列。

#include<iostream>
#include<deque>
using namespace std;int main(){deque<int> d;d.push_back(1);d.push_back(2);cout<<d[0]<<" : "<<d[1]<<endl;return 0;}

从头部插入元素,不会增加新元素,只将原来有的元素覆盖。

#include<iostream>#include<deque>using namespace std;int main(){deque<int> d;d.push_back(1);d.push_back(2);d.push_back(3);d.push_front(10);//d.insert(d.begin()+1, 10);d.push_front(20);//d.insert(d.begin()+2, 20);cout<<d[0]<<" "<<d[1]<<" "<<d[2]<<endl;return 0;}
---------------------
作者:xiaowei_nbu
来源:CSDN
原文:https://blog.csdn.net/caicai_zju/article/details/49227927
版权声明:本文为博主原创文章,转载请附上博文链接!

*遍历

#include<iostream>#include<deque>using namespace std;int main(){deque<int> d;d.push_back(1);d.push_back(2);d.push_back(3);for(int i = 0; i < d.size(); i ++)cout<<d[i]<<" ";cout<<endl;deque<int>::iterator it;for(it = d.begin(); it != d.end(); it ++)cout<<*it<<" ";cout<<endl;deque<int>::reverse_iterator rit;for(rit = d.rbegin(); rit != d.rend(); rit ++)cout<<*rit<<" ";cout<<endl;return 0;}

*删除元素
可以从双端队列的手部,尾部,中部删除元素,并可以清空双端队列容器

#include<iostream>
#include<deque>
using namespace std;int main()
{deque<int> d;for(int i = 1; i < 6; i ++)d.push_back(i);d.pop_front();d.pop_front();deque<int>::iterator it;for(it = d.begin(); it != d.end(); it ++)cout<<*it<<" ";cout<<endl;d.pop_back();for(it = d.begin(); it != d.end(); it ++)cout<<*it<<" ";cout<<endl;d.erase(d.begin()+1);for(it = d.begin(); it != d.end(); it ++)cout<<*it<<" ";cout<<endl;d.clear();cout<<d.size()<<endl;return 0;
}

C++STL之双端队列Deque相关推荐

  1. STL之双端队列deque:新手入门,基础应用

    STL之双端队列deque:新手入门,基础应用 简单的自我介绍 STL之deque:基本函数的运用 源代码 运行结果 结尾 简单的自我介绍 一名努力学习code的计算机专业大二在校学生,平时不论是完成 ...

  2. 【C++】STL常用容器总结之五:双端队列deque

    6.双端队列deque 所谓的deque是"double ended queue"的缩写,双端队列不论在尾部或头部插入元素,都十分迅速.而在中间插入元素则会比较费时,因为必须移动中 ...

  3. 6-5-2:STL之stack和queue——双端队列deque

    文章目录 双端队列-deque 双端队列-deque deque是一种双向开口的连续线性空间.所谓双向开口,意思就是可以在头尾两端分别进行元素的插入和删除操作 deque的出现是为了解决融合vecto ...

  4. C++ 双端队列(deque)的使用

    双端队列(deque)是什么 双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除的功能,deque类似于vector, 双端队列(deque)属于STL(Standard ...

  5. c++ 双端队列 deque 之 (头部、尾部)插入元素/删除元素/

    头文件     #include <deque> 和vector用法基本相同 没有 capacity() reserve() 有了push_back(),pop_back() //inse ...

  6. [转载] Python的双端队列deque

    参考链接: Python中的双端队列DeQue Python的强大并不在于它的语法,而在于它的库,当你对各种数据结构感到苦恼时,Python提供了各种开箱即用的数据结构. 数据结构中最常讲授的数据结构 ...

  7. 队列(queue)与双端队列(deque)—Python实现方法及回文词应用

    队列 Queue 抽象数据类型Queue:一个有次序的数据集合,数据项仅从 尾(rear) 端添加,且仅从 首(front) 端移除,具有 "FIFO" 的特点. 需要实现的操作: ...

  8. 【C++ 与 STL】双端队列:deque

    头文件 #include <deque> 常用方法: a.push_front(0);//在头部加入数据0 a.push_back(11);//在尾部加入数据11 a.pop_front( ...

  9. C++ 双端队列deque

    双端队列的简单认识 双端队列是动态大小的序列式容器,其可以像两端进行伸缩. 特定的库可以以不同的方式实现deque,但通常都是一种动态数组.不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素 ...

  10. java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习

    queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.除了基本的 Collection 操作外,队列还 ...

最新文章

  1. 微观世界探索者:15家值得关注的纳米技术公司
  2. Magento获取指定分类下的所有子分类信息
  3. vxworks 学习和windows azure 学习
  4. 网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门
  5. 专精开发还是转管理?程序员的职业规划选择,没有想象中那么难
  6. 【sprinb-boot】资源、配置、lib分离打包
  7. 什么是 “原型模式” ?
  8. 第二天一早的飞鸽传书
  9. java泛型特点_java泛型简单总结
  10. 关闭tomcat报错Cannot allocate memory
  11. Idea 里svn的导入使用
  12. 蓝桥方格分割(搜索)
  13. 网际风全推数据接口_网际风数据接口飞狐交易师版简要说明.doc
  14. poj 2387 最短路 spfa 实现
  15. mysql数据库各项参数查询
  16. linux版高德导航软件下载,高德导航下载2021年最新版本_高德导航2021手机版下载-太平洋下载中心...
  17. 民办三本,我从3K到15K的一年
  18. 关于Java文件路径问题
  19. 为你推荐一款高效的IO组件——okio
  20. oracle收购了什么意思,BEA为何会被Oracle收购?

热门文章

  1. win10下安装maven
  2. BZOJ2006:[NOI2010]超级钢琴——题解
  3. 基于vue2.0+svg 拓扑组件
  4. JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
  5. [C#]System.Timers.Timer(2)
  6. 更新CocoaPods碰到的问题及知识点
  7. Win7-64位 Cygwin编译Redis
  8. Removing Nesting By Returning Early
  9. springboot项目中使用spring的xml文件
  10. java.io.Serializab接口