STL中的序列式容器——deque(双端队列)

  deque 是双端队列类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
  deque是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <deque>;

  deque和vector非常相似,属于序列式容器,都是采用动态数组来管理元素,提供随机存取,并且有着和vector一样的接口,不同的是deque具有首尾两端进行快速插入、删除的能力。

一、deque 的初始化

有以下方式,举例说明如下:

deque<int> a;
deque<int> a(10); //定义了10个整型元素的双端队列(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
deque<int> a(10,1); //定义了10个整型元素的双端队列,且给出每个元素的初值为1
deque<int> a(b); //用b向量来创建a双端队列,整体复制性赋值
deque<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
int b[7]={1,2,3,4,5,9,8};deque<int> a(b,b+7); //从数组中获得初值

二、deque 对象的重要操作

列举如下:

a.back(); //返回a的最后一个元素
a.front(); //返回a的第一个元素
a[i]; //返回a的第i个元素,当且仅当a[i]存在
a.at(i); //返回位置n处的元素。a.at(i)与a[i]差不多
a.clear(); //清空a中的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.push_back(5);//在a的最后一个向量后插入一个元素,其值为5
a.push_front(5);//在a的最前一个向量前插入一个元素,其值为5
a.pop_front();//从容器的首部移走数据;
a.pop_back();//从容器的尾部移走数据;
a.size(); //返回a中元素的个数
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.swap(b); //b为双端队列,将a中的元素和b中的元素进行整体性交换
a==b; //b为双端队列,双端队列的比较操作还有!=,>=,<=,>,<,对于==来说,首先比较它们的大小,若size相等,则依次比较元素;对于其他运算符,依次比较元素

特别注意:

  deque的函数操作还有很多,大部分操作和vector的用法相同,但从双端队列的特性出发,并不支持相关函数,因此本文只列举了双端队列支持且常用的函数。

STL中的序列式容器——deque(双端队列)相关推荐

  1. STL源码剖析 序列式容器 deque双端队列

    相较于vector的内存拷贝,deque在内存不足时只需要进行内存的拼接操作即可,不需要重新配置.复制.释放等操作,代价就是迭代器的架构不是一个普通的指针,比较复杂 d e q u e 的迭代器 de ...

  2. C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set

    目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...

  3. C++---deque双端队列

    deque deque双端队列,是C++,STL标准模板库中提供的一种容器. 什么是双队列 队列:是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear) ...

  4. python deque双端队列的神奇用法

    python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...

  5. C++ STL : 模拟实现STL中的关联式容器map和set

    目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...

  6. STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器

    Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...

  7. stl之deque双端队列容器

    deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除.不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势. 头文件 #include ...

  8. C++中STL容器之双端队列——dequeue

    1.双端队列介绍 双端队列(dequeue) 与vector很类似,采用线性表顺序存储结构,且支持随机访问,即可以直接用下标来访问元素.但与vector有区别: deque采用分块的线性存储结构来存储 ...

  9. STL源码剖析 deque双端队列 概述

    vector是单向开口的连续线性空间,deque是一种双向开口的连续线性空间. deque可以在头尾两端分别进行元素的插入和删除操作 vector和deque的差异 1,deque允许常数时间内对于头 ...

  10. Java 集合深入理解(10):Deque 双端队列

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...

最新文章

  1. 字符串中 去掉字符串前后空格以、'\t'(tab) C函数实现,附sscanf正则方式
  2. 【学习笔记】SAP CO模块概念信息(上)
  3. SQL学习之去重复查询
  4. C# 对轻量级(IoC Container)依赖注入Unity的使用
  5. SSM整理笔记1——SSM网站初步功能设计
  6. java字符串abcde_java aababcabcdabcde,获取字符串中每一个字母出现的次数
  7. 这一刻只想好好做个平凡的人
  8. js最基础知识回顾1(参数,函数,网页换肤)
  9. 鲸会务,多场景覆盖数字化会议管家
  10. 2018校招-挂面-H3C-技术支持工程师
  11. osgEarth示例分析——osgearth_graticule
  12. iOS应用性能调优的25个建议和技巧
  13. Oracle 外部表
  14. 使用mpvue实现动态图片波浪图效果
  15. 数据挖掘之坦坦尼克号获救情况分析
  16. 【模糊综合评价的运用】——《电子舌技术在食用盐模糊感官评价中的应用》论文笔记(内附MATLAB程序)
  17. HTML 标签 02
  18. 如何设置亚马逊code促销活动?
  19. Python语法规范
  20. LTE射频拉远单元数字中频方案(六)

热门文章

  1. Flutter动画系列之AnimatedWidget
  2. 焦虑不安急于求成,本质上就是一种懒惰
  3. FFmpeg总结(八)windows下用ffmpeg获取视频缩略图
  4. mysql++缓冲区_思考mysql内核之初级系列4--innodb缓冲区管理(摘自老杨)
  5. linux 文件 跳板机_linux 跳板机得搭建
  6. mysql 语法手册_MySQL语法大全_自己整理的学习笔记
  7. java countdowntimer_(六)Android中使用CountDownTimer实现倒计时功能
  8. nbi可视化_教您通过NBI大数据可视化工具零编码轻松实现桑基图的制作
  9. 如何协助 MySQL 实现 Oracle 高级分析函数
  10. sublime livereload插件