在编程中,队列(Queue)是一种非常基础且常用的数据结构。它遵循“先进先出”(FIFO, First In First Out)的原则,就像我们在超市排队结账一样:先来的人先被服务。本教程将带你从零开始,使用C++语言实现一个完整的队列数据结构,无论你是编程小白还是有一定基础的学习者,都能轻松理解。

队列有两个关键操作:
除此之外,我们通常还会实现以下辅助功能:
front():查看队首元素但不移除。isEmpty():判断队列是否为空。size():获取当前队列中元素的数量。C++ 标准模板库(STL)已经为我们提供了现成的队列容器 std::queue,使用起来非常方便。这是学习 C++ STL队列 的最佳起点。
#include <iostream>#include <queue>int main() { std::queue<int> q; // 入队 q.push(10); q.push(20); q.push(30); // 查看队首元素 std::cout << "队首元素: " << q.front() << std::endl; // 输出 10 // 出队 q.pop(); // 当前大小 std::cout << "队列大小: " << q.size() << std::endl; // 输出 2 // 判断是否为空 if (!q.empty()) { std::cout << "队列非空" << std::endl; } return 0;}这种方式简单高效,适合大多数应用场景。但如果你想深入理解队列底层原理,建议尝试自己实现一个队列。
下面我们用数组手动实现一个固定容量的队列。这有助于你掌握 自定义队列C++ 的核心逻辑。
#include <iostream>#include <stdexcept> // 用于异常处理class MyQueue {private: int* arr; // 存储队列元素的数组 int capacity; // 队列最大容量 int frontIndex; // 队首索引 int rearIndex; // 队尾索引 int currentSize; // 当前元素数量public: // 构造函数 MyQueue(int size) { capacity = size; arr = new int[capacity]; frontIndex = 0; rearIndex = -1; currentSize = 0; } // 析构函数,释放内存 ~MyQueue() { delete[] arr; } // 入队 void enqueue(int value) { if (currentSize == capacity) { throw std::overflow_error("队列已满,无法入队!"); } rearIndex = (rearIndex + 1) % capacity; // 循环队列 arr[rearIndex] = value; currentSize++; } // 出队 int dequeue() { if (isEmpty()) { throw std::underflow_error("队列为空,无法出队!"); } int value = arr[frontIndex]; frontIndex = (frontIndex + 1) % capacity; currentSize--; return value; } // 查看队首元素 int front() { if (isEmpty()) { throw std::underflow_error("队列为空!"); } return arr[frontIndex]; } // 判断是否为空 bool isEmpty() { return currentSize == 0; } // 获取当前大小 int size() { return currentSize; }};// 测试代码int main() { MyQueue q(5); q.enqueue(100); q.enqueue(200); q.enqueue(300); std::cout << "队首: " << q.front() << std::endl; // 100 std::cout << "出队: " << q.dequeue() << std::endl; // 100 std::cout << "当前大小: " << q.size() << std::endl; // 2 return 0;}这段代码实现了循环队列(Circular Queue),避免了普通数组队列在多次入队出队后“假溢出”的问题。这也是 C++队列实现 中的经典优化技巧。
通过本教程,你已经掌握了两种实现队列的方法:
std::queue —— 快速、安全、高效。对于初学者,建议先熟练使用 STL 队列;当你需要定制功能或优化性能时,再考虑自定义实现。无论哪种方式,理解 FIFO 原则和基本操作都是关键。
希望这篇教程能帮助你扎实掌握 C++ 中的队列!如果你觉得有用,欢迎分享给更多正在学习 C++队列实现 的朋友。
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128248.html