C++---deque双端队列

deque

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

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

双端队列的底层结构

在这里插入图片描述
底层为每个结点都申请了一份空间。

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

迭代器作用
begin/endbegin:容器起始位置,end:容器最后一个元素的下一个位置
rbegin/end反向迭代器,rbegin:最后一个元素的下一个位置,rend:起始位置
cbegin/cendconst类型迭代器,位置与begin/end相同
crbegin/crendconst类型迭代器,位置与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中的元素清空

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值