STL容器适配器——queue类
·
一、queue是什么
STL 中的queue(队列) 是一种先进先出(FIFO, First In First Out)的容器适配器,就像排队买票:先进入队列的元素,最先被取出。

二、queue的特点
1.先进先出(FIFO):
先入队的数据,最先出队。
2.受限访问:
只能访问队首和队尾元素,不能随机访问。
三、queue的使用
3.1 queue的初始化
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| queue() | queue<int> s; | 构造空的队列 |
3.2 queue类对象的容量操作
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| empty() | q1.empty() | 判断是否为空 |
| size() | q1.size() | 获取长度 |
3.3 queue类对象的访问及遍历操作
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| front() | q1.front(); | 返回队头元素的引用 |
| back() | q1.back(); | 返回队尾元素的引用 |
3.4 queue类对象的修改操作
| 名称 | 使用示例 | 功能说明 |
|---|---|---|
| push(val); | q1.push(val); | 元素val入队 |
| pop(); | q1.pop(); | 队头出队 |
演示代码
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
// 入队
q.push(1);
q.push(2);
q.push(3);
// 查看队头队尾
cout << "队头: " << q.front() << endl;
cout << "队尾: " << q.back() << endl;
// 出队
q.pop();
cout << "出队后队头: " << q.front() << endl;
// 遍历(边出边读)
cout << "队列元素: ";
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
return 0;
}
四、使用场景
C++ STL 中的 queue 是遵循先进先出(FIFO)规则的容器适配器
它虽不支持迭代器遍历、不能访问中间元素,但胜在使用方便、接口简单且安全省心,能避免误操作破坏顺序
其核心使用场景集中在需“先来先服务”的场景中
最核心的是算法中的BFS广度优先搜索(如迷宫最短路径、二叉树层序遍历、无权重图遍历)
此外还广泛应用于任务排队(线程任务、订单处理)
数据流顺序处理(缓冲区读取、按键事件)
操作系统中的进程就绪队列、打印机队列等
只要需求是“不能插队、按序处理”,queue就是省心高效的选择,用queue存储待处理节点,循环取出队首处理并将相邻未处理节点入队,直至队空。
更多推荐
所有评论(0)