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 最常见的用法。

相关推荐
垆边人似月.5 分钟前
华为机试题 :有效的括号
c++·算法·华为
坤坤子吖10 分钟前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
神仙别闹1 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
CQU_JIAKE1 小时前
10.9【A】
数据结构
第25小时记录1 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·python
王老师青少年编程1 小时前
2026年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
C++ 老炮儿的技术栈1 小时前
static的作用
c语言·c++·人工智能·单片机·c
程序员老陆3 小时前
C++ 未定义行为全景:对象模型、优化边界与工程防御
开发语言·c++·程序设计
小小龙学IT3 小时前
Go 语言 cgo 与 C/C++ 互操作深度解析:从 fwlib 直连到工业数采网关实战系列
c语言·c++·golang