概述
队列是C++中很常用的一种STL,本节课蒟蒻君将带领大家学习队列。
队列是哈?
- 队列是一种操作受限制的线性表,只允许从前端删除,后端插入。
- 我们管队列前端叫队首,后端叫队尾。
- 队列插入元素叫入队,删除元素叫出队。
- 我们可以把队列想象成一个等着撸猫的队伍,先来的先撸猫,后来的后撸猫,不能插队。这就是队列的基本性质——先进先出。
队列其实差不多就是这样:
这东东咋用?
函数名 | 功能 | 参数类型 | 返回值类型 |
---|---|---|---|
push | 将一个元素入队 | 和队列类型相同 | 无 |
pop | 弹出队首 | 无 | 无 |
front | 队首是什么 | 无 | 和队列类型相同 |
empty | 队列是否为空 | 无 | bool |
size | 队列中有都少个元素 | 无 | size_t(当int用就行了) |
使用实例
#include <bits/stdc++.h>
using namespace std;
queue<int> q; // 定义一个int类型的队列queue
int main() {
q.push(1); // 1入队
cout << q.empty() << '\n'; // 输出队首是否为空
q.push(2); // 2入队
cout << q.front() << '\n'; // 输出队首元素
q.pop(); // 队首元素出队
cout << q.size() << '\n'; // 输出队列中有多少个元素
return 0;
}
练习
队列最有用的地方就是广度优先搜索(bfs)了,建议大家阅读以下两篇博文,详见BFS (做广告)。
算法初探系列4——广度优先搜索之图上搜索
算法初探系列5——广度优先搜索之状态表示