STL专项:deque 双端队列

deque

deque 是 queue 的升级版,全称为 double-ended queue ,队头和队尾都支持入队和出队,同时还支持遍历,所有操作时间复杂度均为O(1)。

声明

deque<int> dq;

常用操作

dq.push_front(x);//在队头插入元素

dq.push_back(x);//在队尾插入元素

dq.front();//获取队头元素

dq.back();//获取队尾元素

//获取队列大小

dq.size();

//判断队列是否为空

dq.empty();

//以下两个操作注意判断队列非空

dq.pop_front();//弹出队头

dq.pop_back();//弹出队尾

遍历deque

//用迭代器遍历

for(auto it = dq.begin(); it != dq.end(); it ++){

cout << *it << ' ';

}

//用基于范围的for循环

for(const auto &val : dq) cout << val << ' ';

一起写论文

一起写论文 | 星码StarryCoding 算法竞赛新手村

代码

删除前一定要记得判空!!!

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

void solve(){
	int N;cin>>N;
	deque<string> dq;
	for(int i=1;i<=N;i++){
		char a,b;cin>>a>>b;
		if(b=='w'){
			string s;cin>>s;
			if(a=='f'){
				dq.push_front(s);
			}else{
				dq.push_back(s);
			}
		}else if(b=='d'){
			if(!dq.size()) continue;
			if(a=='f') dq.pop_front();
			else dq.pop_back();
		}
	}
	if(dq.empty()) cout<<'#';
	else{
		while(dq.size()){
			cout<<dq.front();
			dq.pop_front();
		}
	}
}

int main(){
	int _;cin>>_;
	while(_--) solve();
	return 0;
}
相关推荐
weixin_460443563 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
Cc.Y6 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
sm_926787056 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev6 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209997 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说7 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha7 小时前
Lambda 表达式和函数式接口
java·开发语言
小白学大数据7 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
colinu7 小时前
C++ 异步任务与线程生命周期:`std::async`、`future`、`thread`、`jthread` 与协作式退出
java·jvm·c++
学逆向的7 小时前
win32注入代码
开发语言·网络安全·api·win32