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

相关推荐
白狐_7981 小时前
408数据结构:中缀转后缀与操作符栈容量——真题精讲
前端·javascript·数据结构
c238562 小时前
# Mini OJ — 项目详解文档
开发语言·数据库·c++
c238562 小时前
C/C++每日一练20
c语言·开发语言·c++
Iruoyaoxh3 小时前
数据结构排序
数据结构
可爱系程序猿3 小时前
msvcp140_codecvt_ids.dll 缺失的排查记录:C++ 程序启动异常时如何核对运行库版本
开发语言·c++·程序人生·电脑
encoconut3 小时前
01_C++ 入门基础
c++
来一碗刘肉面4 小时前
图的基本操作
数据结构
郝学胜-神的一滴4 小时前
中级OpenGL教程 030:gl_FragCoord解锁区域渲染与深度可视化新姿势
c++·unity·游戏引擎·图形渲染·unreal engine·opengl
不会代码的小猴5 小时前
11. 类和动态内存分配
开发语言·c++