C++中的queue是FIFO容器适配器,需包含头文件,常用操作包括push入队、pop出队、front获取队首、back获取队尾、empty判空和size获取大小,不支持迭代器遍历,常用于BFS、任务调度等场景。

C++ 中的队列(queue)是一种先进先出(FIFO, First In First Out)的数据结构,常用于需要按顺序处理元素的场景。它在 queue 头文件中定义,是 STL(标准模板库)中的容器适配器之一。下面详细介绍 C++ queue 的基本用法和常用操作。
包含头文件与定义队列
使用 queue 前必须包含对应的头文件:
// 包含 queue 头文件#include
// 定义一个存储 int 类型的队列
std::queue
// 也可以存储其他类型,如 string、自定义结构体等
std::queue<:string> str_q;
std::queue
常用成员函数详解
queue 提供了几个核心操作函数,用于入队、出队、查看队首/队尾以及判断状态。
q.push(value);将一个元素添加到队列的末尾(入队)。时间复杂度为 O(1)。
立即学习“C++免费学习笔记(深入)”;
q.pop();移除队列头部的元素(出队),但不返回值。如果要获取值,需先调用 front()。注意:调用 pop() 前应确保队列非空,否则行为未定义。
q.front();返回队列第一个元素的引用,可用于读取或修改。访问前应确保队列不为空。
q.back();返回队列最后一个元素的引用,即最后入队的元素。
q.empty();判断队列是否为空,返回 bool 值。推荐在 pop 或 front 操作前检查。
q.size();返回队列中元素个数,返回类型为 size_t。
基本操作示例
以下是一个完整的小例子,展示 queue 的常见操作:
#include iostream>#include
using namespace std;
int main() {
queue
// 入队操作
q.push(10);
q.push(20);
q.push(30);
cout cout cout
// 出队一个元素
q.pop();
cout
// 遍历队列(只能通过出队实现)
while (!q.empty()) {
cout q.pop();
}
if (q.empty()) {
cout }
return 0;
}
注意:queue 不支持迭代器,不能像 vector 那样用 for 循环直接遍历。如需遍历,只能不断 front + pop,或者使用辅助容器保存副本。
常见应用场景
queue 广泛应用于算法和实际开发中:
- 广度优先搜索(BFS):图或树的层序遍历时使用 queue 存储待访问节点。
- 任务调度:操作系统中任务按到达顺序处理。
- 缓冲区管理:如消息队列、打印队列等。
- 滑动窗口问题:配合双端队列 deque 实现高效算法。
基本上就这些。掌握 push、pop、front、back 和 empty 这几个核心操作,就能熟练使用 C++ 的 queue 容器。记住操作前判空,避免运行时错误。








