C++---deque双端队列
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双端队列相关推荐
- python deque双端队列的神奇用法
python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...
- STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器
Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...
- STL源码剖析 deque双端队列 概述
vector是单向开口的连续线性空间,deque是一种双向开口的连续线性空间. deque可以在头尾两端分别进行元素的插入和删除操作 vector和deque的差异 1,deque允许常数时间内对于头 ...
- stl之deque双端队列容器
deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除.不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势. 头文件 #include ...
- Java 集合深入理解(10):Deque 双端队列
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...
- C++deque双端队列
调用头文件: #include<deque> using namespace std; 详细用法(部分): deque<Type> k; ------ 定义 ...
- STL源码剖析 序列式容器 deque双端队列
相较于vector的内存拷贝,deque在内存不足时只需要进行内存的拼接操作即可,不需要重新配置.复制.释放等操作,代价就是迭代器的架构不是一个普通的指针,比较复杂 d e q u e 的迭代器 de ...
- C++ 双端队列(deque)的使用
双端队列(deque)是什么 双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除的功能,deque类似于vector, 双端队列(deque)属于STL(Standard ...
- 6-5-2:STL之stack和queue——双端队列deque
文章目录 双端队列-deque 双端队列-deque deque是一种双向开口的连续线性空间.所谓双向开口,意思就是可以在头尾两端分别进行元素的插入和删除操作 deque的出现是为了解决融合vecto ...
最新文章
- 转换图像分辨率c++代码_哈工大等提出轻量级盲超分辨模型LESRCNN,代码已开源...
- Nature:拟南芥微生物组功能研究
- android 解决华为系列手机调试时不能打印Logcat日志信息
- 《当下的哲学》[法]阿兰.巴迪欧(作者)epub+mobi+azw3格式下载
- Android成长日记-使用ViewFlipper实现屏幕切换动画效果
- input与select在不同浏览器上的宽度显示不同及IE背景图显示问题
- iOS开发UINavigation系列四——导航控制器UINavigationController
- [bzoj 4869] [六省联考2017] 相逢是问候
- 测试人员要了解的知识
- 利用函数wavread对语音信号进行采样_AI大语音(一)——语音识别基础(深度解析)...
- Brex联合创始人:可能将加密货币纳入资产负债表
- 瑞典正成为欧洲硅谷?
- linux ssh密钥登录
- 接 嵌入式设备上的Linux系统开发
- db9串口(db9串口定义及颜色)
- 外联css不生效,css外联样式不起作用的解决方法
- java计算机毕业设计雁门关风景区宣传网站源码+系统+mysql数据库+lw文档
- 【PA2011】Kangaroos
- uniapp 生成html5_uni-app 登录(h5+ app 篇)
- 【Arduino实验08 红外传感器】
热门文章
- 架构师的职责都有哪些?
- C++ Error: error LNK2019: unresolved external symbol
- GCD(Grand Central Dispatch)和Block 使用-浅析
- illegal text-relocation
- android listview 不重绘,重绘listview
- MIT6.830 lab5 B+ Tree Index 实验报告
- pc变手机端html,让移动端的事件变为PC端的事件
- mos管电路_MOS管笔记之外围电路和缓冲电路设计
- 4.11_facade_结构型模式:外观模式
- 设计sample语言的语法_Verilog语法之〇:Verilog HDL简介