队列大致上和栈相同,不同之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的容器适配器,都是基于deque容器上实现的。进行插入操作的端称为队尾,进行删除操作的端称为队头。
需要包含queue头文件
创建队列的操作:
queue<数据类型>变量名
如:queue<int> q;
队列的有关操作:
q.push(n); //将n放进队列
q.front(); //返回队头元素
q.pop(); //删除队头元素
q.back(); //返回队尾元素
q.size(); // 返回元素个数
q.empty(); //检查队列是否为空,空为返回true
用法举例:
将栈里的翻转字符串问题中的栈改为队列即可变为正序输出,虽然可以直接用cout,cin来替代,但可以清楚的分辨两者的差别。
#include<iostream>
#include<queue>
using namespace std;
int main()
{
char ch;
queue<char> str;
while (1)
{
ch = getchar();//逐个读入字符
if (ch == '\n')//判断输入结束
{
while (!str.empty())//判断是否非空
{
cout << str.front();//输出队列队头
str.pop();//删除栈顶
}
cout << endl;//换行
}
else
str.push(ch);//入栈
}
return 0;
}