C++ queue详解
队列
一种操作受限制的线性表
特点
只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作
队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构
适用条件
排队 挂号 消息队列 广度优先搜索等符合队列特点的操作
常用函数
queue<int> q; //以int型为例
int x;
q.empty() 如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push(x) 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素
例题
#include<bits/stdc++.h>
#define int long long
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>b;--i)
using namespace std;
const int N = 100005;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
signed main(){
queue<int> q;
int n=read();
while(n--){
char ch[7];
scanf("%s", ch);
if(ch[0]=='p'&&ch[1]=='u'){
int m=read();
q.push(m);
}else if(ch[0]=='p'&&ch[1]=='o'){
q.pop();
}else if(ch[0]=='e'){
if(q.empty()){
printf("YES\n");
}else{
printf("NO\n");
}
}else{
printf("%lld\n", q.front());
}
}
return 0;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈