在 C++编程教程 中,队列(Queue)是一种非常基础且实用的数据结构。它遵循“先进先出”(FIFO, First In First Out)的原则,就像我们在超市排队结账一样:先来的人先被服务。C++ 标准模板库(STL)为我们提供了现成的 queue 容器适配器,极大简化了开发过程。
本文将通过通俗易懂的方式,带你从零开始理解并掌握 C++ STL队列 的基本操作和实际应用场景,即使是编程小白也能轻松上手!
队列是一种线性数据结构,只允许在一端(称为“队尾”)插入元素,在另一端(称为“队首”)删除元素。这种特性使得它非常适合用于任务调度、缓冲处理、广度优先搜索(BFS)等场景。

C++ STL 提供了 #include <queue> 头文件,其中定义了 std::queue 类模板。下面是最常用的几个成员函数:
push(x):在队尾插入元素 xpop():删除队首元素(不返回值)front():返回队首元素的引用back():返回队尾元素的引用empty():判断队列是否为空size():返回队列中元素的个数假设你有一台打印机,多个用户同时发送打印任务。我们可以用队列来模拟这个过程:
#include <iostream>#include <queue>#include <string>int main() { std::queue<std::string> printQueue; // 添加打印任务 printQueue.push("文档A.pdf"); printQueue.push("简历.docx"); printQueue.push("报告.pptx"); std::cout << "当前等待打印的任务数量: " << printQueue.size() << std::endl; // 模拟逐个打印 while (!printQueue.empty()) { std::cout << "正在打印: " << printQueue.front() << std::endl; printQueue.pop(); // 打印完成后移除任务 } std::cout << "所有任务已完成!" << std::endl; return 0;}运行结果会依次输出三个文件名,体现了“先进先出”的特性。这就是 C++队列应用 的一个典型例子。
在图或树的遍历中,广度优先搜索(BFS)必须使用队列来实现层级遍历。下面是一个简化版的二叉树BFS示例:
#include <iostream>#include <queue>struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}};void BFS(TreeNode* root) { if (!root) return; std::queue<TreeNode*> q; q.push(root); while (!q.empty()) { TreeNode* node = q.front(); q.pop(); std::cout << node->val << " "; if (node->left) q.push(node->left); if (node->right) q.push(node->right); }}int main() { // 构建简单二叉树: 1 // / \ // 2 3 // / \ // 4 5 TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5); std::cout << "BFS遍历结果: "; BFS(root); // 输出: 1 2 3 4 5 std::cout << std::endl; return 0;}在这个例子中,队列帮助我们按层级顺序访问每个节点,这正是 队列数据结构 在算法中的核心价值。
pop() 不返回值:如果你需要获取并移除队首元素,请先用 front() 获取,再调用 pop()。deque:你也可以指定其他容器(如 list),但一般无需更改。通过本文,你已经掌握了 C++ 中队列的基本概念、常用操作以及两个实用的应用场景。无论是处理任务调度还是实现图算法,C++ STL队列 都是你不可或缺的工具。
记住:多动手写代码是掌握编程的关键!尝试修改上面的例子,比如添加错误处理、扩展功能,或者用队列解决生活中的排队问题。
希望这篇 C++编程教程 能帮助你顺利入门队列的使用。继续加油,你离成为 C++ 高手又近了一步!
本文由主机测评网于2025-12-14发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025127783.html