deque

deque双端队列,是C++,STL标准模板库中提供的一种容器。

什么是双队列
队列:是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
故名思意:双端队列就是,在队列的前端与后端都可以进行插入删除操作。

双端队列的底层结构


底层为每个结点都申请了一份空间。

双端队列底层是一个假象的连续空间,实际上是分段存储的,我们平时在使用双端队列的时候发现与数组一样,根本没有感觉到是分段存储的,这是由于其在底层将迭代器进行改进。

迭代器 作用
begin/end begin:容器起始位置,end:容器最后一个元素的下一个位置
rbegin/end 反向迭代器,rbegin:最后一个元素的下一个位置,rend:起始位置
cbegin/cend const类型迭代器,位置与begin/end相同
crbegin/crend const类型迭代器,位置与rbegin/rend相同

rbegin/rend其实就是将end/begin迭代器进行的封装。

迭代器工作原理:

常用接口

deque官方接口

  • 构造
函数声明 接口说明
deque() 构造空双向队列
deque(const deque& d) 拷贝构造双向队列
deque(size_t size,int val) 用size个值为val的元素构造双端队列
deque(iterator first,iterator last) 区间构造
  • 迭代器
函数声明 接口说明
begin(),end() begin:容器起始位置 end最后一个元素下一个位置
rbegin(),rend() 反向迭代器rbegin在end位置,rend在begin
cbegin(), cend() const迭代器,与begin和end位置相同,但不能修改其空间内容
crbegin(), crend() const反向迭代器,与crbegin在cend位置,crend在cbegin位置
  • 容量操作
函数声明 接口说明
size() 返回deque中有效元素个数
empty() 检测deque是否为空
resize(size,val) 将deque中的元素改变到size,多出的空间用val填充
  • 修改操作
push_back() 和 pop_back() deque的尾插和尾删
push_front() 和 pop_front() deque任意位置插入和删除
insert(pos, value) 在pos位置中插入value
erase(pos) 删除deque头部元素
swap() 交换两个deque中的内容
将deque中的元素清空

C++---deque双端队列相关推荐

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

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

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

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

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

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

  4. stl之deque双端队列容器

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

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

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

  6. C++deque双端队列

    调用头文件: #include<deque> using namespace std; 详细用法(部分): deque<Type> k;      ------      定义 ...

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

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

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

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

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

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

最新文章

  1. 转换图像分辨率c++代码_哈工大等提出轻量级盲超分辨模型LESRCNN,代码已开源...
  2. Nature:拟南芥微生物组功能研究
  3. android 解决华为系列手机调试时不能打印Logcat日志信息
  4. 《当下的哲学》[法]阿兰.巴迪欧(作者)epub+mobi+azw3格式下载
  5. Android成长日记-使用ViewFlipper实现屏幕切换动画效果
  6. input与select在不同浏览器上的宽度显示不同及IE背景图显示问题
  7. iOS开发UINavigation系列四——导航控制器UINavigationController
  8. [bzoj 4869] [六省联考2017] 相逢是问候
  9. 测试人员要了解的知识
  10. 利用函数wavread对语音信号进行采样_AI大语音(一)——语音识别基础(深度解析)...
  11. Brex联合创始人:可能将加密货币纳入资产负债表
  12. 瑞典正成为欧洲硅谷?
  13. linux ssh密钥登录
  14. 接 嵌入式设备上的Linux系统开发
  15. db9串口(db9串口定义及颜色)
  16. 外联css不生效,css外联样式不起作用的解决方法
  17. java计算机毕业设计雁门关风景区宣传网站源码+系统+mysql数据库+lw文档
  18. 【PA2011】Kangaroos
  19. uniapp 生成html5_uni-app 登录(h5+ app 篇)
  20. 【Arduino实验08 红外传感器】

热门文章

  1. 架构师的职责都有哪些?
  2. C++ Error: error LNK2019: unresolved external symbol
  3. GCD(Grand Central Dispatch)和Block 使用-浅析
  4. illegal text-relocation
  5. android listview 不重绘,重绘listview
  6. MIT6.830 lab5 B+ Tree Index 实验报告
  7. pc变手机端html,让移动端的事件变为PC端的事件
  8. mos管电路_MOS管笔记之外围电路和缓冲电路设计
  9. 4.11_facade_结构型模式:外观模式
  10. 设计sample语言的语法_Verilog语法之〇:Verilog HDL简介