1.队列(queue)的简单介绍
和栈相反,队列(queue)
是一种先进先出
(first in first out,缩写为FIFO)线性表。它只允许在在表的一端进行插入,称之为队尾(rear),而在另一端删除元素,称为队头(front)。这话我们生活中的排队
思想是一致的,最早进入队列的元素最早离开。
一般的队列示意图如下:
2.队列的基本用法
2.1 头文件
#include<queue>
2.2 定义
queue<Type> Q; //定义一个queue变量Q
注意queue的模板定义如下:
template < class T, class Cont = deque<T> >
class queue{
...
};
即,queue 可以用 list 和 deque 实现,默认情况下用 deque 实现。
2.3 常用函数
操作 | 含义 |
---|---|
q.empty() | 如果队列为空返回true,否则返回false |
q.size() | 返回队列中元素的个数 |
q.pop() | 删除队列首元素但不返回其值 |
q.front() | 返回队首元素的值,但不删除该元素 |
q.push(X) | 在队尾压入新元素 ,X为要压入的元素 |
q.back() | 返回队列尾元素的值,但不删除该元素 |
简单示例代码:
#include <iostream>
#include<stack>
#include<list>
#include<queue>
using namespace std;
int main()
{
queue<int> q;
q.push(1);
q.push(2);
cout << "队首元素:" << q.front() << endl;
q.pop();
cout << "队首元素:" << q.front() << endl;
cout << "队列大小:" << q.size() << endl;
q.pop();
if (q.empty())
cout << "最后,队列为空" << endl;
system("pause");
return 0;
}