STL专项:deque 双端队列

deque

dequequeue 的升级版,全称为 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;
}
相关推荐
10岁的博客3 分钟前
【C++题解】最多共线点问题:小飞拿蛋糕游戏的最优策略
c++
東隅已逝,桑榆非晚25 分钟前
类和对象(中)
c++·笔记
运维行者_41 分钟前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
Patrick在香港43 分钟前
Python爬虫框架实战:优雅抓取香港政府公开API数据的通用方案
java·开发语言·爬虫·python·ai编程·数据可视化·可用性测试
hey_sml1 小时前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
广东程序猿小展1 小时前
《007初露锋芒》风灵月影13项修改器下载 007初露锋芒修改器使用方法
开发语言·javascript·ecmascript
wuminyu1 小时前
JDK21解决虚拟线程IO阻塞原理剖析
java·linux·c语言·jvm·c++
MC皮蛋侠客1 小时前
TDengine C++ 系列(4):时序查询——窗口聚合、插值、连接与时序函数
大数据·c++·tdengine
junuo1 小时前
10_C++内存分区与动态内存管理
c++·编程语言
菜冻鱼2 小时前
Python-sklearn-特征工程
开发语言·人工智能·python·机器学习·numpy·matplotlib·sklearn