016【入门】双端队列

C++ STL 里面有双端队列(deque),头文件是:

复制代码
#include <deque>

定义:

复制代码
deque<int> q;

它可以在队头和队尾进行插入、删除

常用函数:

1. 两端插入

复制代码
q.push_back(x);   //尾部插入
q.push_front(x);  //头部插入

例如:

复制代码
deque<int> q;
q.push_back(2);
q.push_front(1);
//q里面是 1 2

2. 两端删除

复制代码
q.pop_back();   //删除尾部
q.pop_front();  //删除头部

3. 访问元素

复制代码
q.front();  //访问队头
q.back();   //访问队尾

例如:

复制代码
cout << q.front();
cout << q.back();

4. 获取大小

复制代码
q.size();

5. 判断为空

复制代码
q.empty();

6. 像数组一样访问

deque支持随机访问:

复制代码
q[0];
q[1];

例如:

复制代码
for(int i=0;i<q.size();i++)
{
    cout<<q[i]<<" ";
}

7. 清空

复制代码
q.clear();

和 queue 的区别:

容器 头部操作 尾部操作 随机访问
queue ×
deque

所以:

  • 只需要先进先出 → queue
  • 需要两头操作 → deque
  • 单调队列、滑动窗口最大值 → 经常用 deque

比如单调队列:

复制代码
deque<int> q;
while(!q.empty()&&a[q.back()]<=a[i])
    q.pop_back();
q.push_back(i);

这是算法题里 deque 最常见的用法。

相关推荐
汉克老师9 小时前
GESP2026年9月认证C++三级( 第三部分编程题(2、分割字符串))精讲
c++·gesp·小学生·学c++编程
估值探索者9 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘
天若有情6739 小时前
C++花式魔改!手写头文件复刻Java语法,彻底打破编码思维定式
java·c++·语言做语言·jac++
qq_1998868710 小时前
第7板块·第3节:CUTLASS 的 GEMM 实现与优化策略
c++·人工智能·gpu算力·cuda
hetao173383710 小时前
2026-09-17 hetao1733837 的刷题记录
c++·算法
午彦琳11 小时前
2026.9.17
数据结构·算法·leetcode
shada11 小时前
Boost.Process v2 在旧内核上报 `assign: Bad file descriptor`
c++
别动我齐刘海11 小时前
ROS2 Jazzy + C++ 实战路线——基础学习2
c++·人工智能·vscode·python·学习·机器学习·机器人
朝朝辞暮i12 小时前
C++第 2 课
c++
代码中介商12 小时前
C++ 预约系统实战(三):服务端实现——libevent 事件驱动与业务路由
c++·json·c/s