跳到主要内容
版本:1.0

queue

std::queue 是 C++ 标准库中的容器适配器,遵循先进先出(FIFO, First In First Out)规则。

需要注意:queue 不是完整容器,它是对底层容器(默认 deque)的封装,只暴露队列语义相关接口。

头文件与基本特征

使用 queue 时,需要包含头文件:

#include <queue>

queue 的常见特征如下:

特征说明
类型容器适配器
访问方式仅队头和队尾
入队push()(尾部)
出队pop()(头部)
顺序规则先进先出(FIFO)
默认底层容器std::deque

基本用法

#include <queue>

int main() {
std::queue<int> q;

q.push(10);
q.push(20);
q.push(30);

q.pop(); // 弹出 10

return 0;
}

常用成员函数

函数作用
push(x)元素入队(队尾)
pop()队头元素出队
front()访问队头元素
back()访问队尾元素
size()当前元素个数
empty()判断是否为空

遍历说明

queue 不提供迭代器,因此不能像 vectorlist 那样直接 for 遍历。

若要查看所有元素,通常复制一份队列后边弹边看:

#include <iostream>
#include <queue>

int main() {
std::queue<int> q;
q.push(1);
q.push(2);
q.push(3);

std::queue<int> tmp = q;
while (!tmp.empty()) {
std::cout << tmp.front() << ' ';
tmp.pop();
}
std::cout << '\n';

return 0;
}

典型场景

queue 常用于:

  1. 图的广度优先搜索(BFS)。
  2. 消息排队、任务队列、流水线处理。
  3. 需要严格按到达顺序处理的数据流。

使用注意

  1. pop() 不返回被弹出的值,需要先 front()pop()
  2. 访问 front() / back() 前应确认队列非空。
  3. 如果需要“优先级出队”,应使用 priority_queue,而不是 queue