C++中实现队列有两种方式:使用STL的std::queue或手动链表实现。std::queue基于deque,提供push、pop、front等接口,使用方便且安全,推荐日常使用;手动链表实现需定义节点和头尾指针,操作复杂但有助于理解底层机制,适合学习场景。两者均支持O(1)入队出队,但std::queue不支持遍历,若需遍历可考虑std::list。

在C++中实现队列,主要有两种常见方式:使用标准模板库(STL)中的 std::queue,或者通过链表手动实现一个队列。下面分别介绍这两种方法的用法和特点。
std::queue 是 C++ STL 提供的容器适配器,底层默认基于 deque 实现,也可以指定 list 或其他序列容器。它提供了先进先出(FIFO)的操作接口,使用非常方便。
基本操作:
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
#include <queue>
<p>int main() {
std::queue<int> q;</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">q.push(10);
q.push(20);
q.push(30);
while (!q.empty()) {
std::cout << "Front: " << q.front() << "\n";
q.pop();
}
return 0;}
输出结果:
Front: 10 Front: 20 Front: 30
优点是无需手动管理内存,接口简洁安全。
如果想深入理解队列的工作机制,可以自己用链表实现。这种方式需要定义节点结构,并维护头指针和尾指针,保证入队和出队操作的时间复杂度为 O(1)。
实现步骤:
示例代码:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
<p>struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};</p><p>class Queue {
private:
Node<em> front;
Node</em> rear;</p><p>public:
Queue() : front(nullptr), rear(nullptr) {}</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">void push(int val) {
Node* newNode = new Node(val);
if (rear == nullptr) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
void pop() {
if (front == nullptr) {
std::cout << "Queue is empty\n";
return;
}
Node* temp = front;
front = front->next;
if (front == nullptr) {
rear = nullptr;
}
delete temp;
}
int peek() {
if (front == nullptr) {
std::cout << "Queue is empty\n";
return -1;
}
return front->data;
}
bool empty() {
return front == nullptr;
}
~Queue() {
while (!empty()) {
pop();
}
}};
int main() { Queue q; q.push(1); q.push(2); q.push(3);
while (!q.empty()) {
std::cout << "Front: " << q.peek() << "\n";
q.pop();
}
return 0;}
这个实现展示了队列的核心逻辑:front 负责出队,rear 负责入队,每次操作保持指针更新。
选择哪种方式取决于使用场景:
注意:std::queue 默认不能遍历,因为它只提供 FIFO 接口。如需遍历,可考虑使用 std::list 配合手写逻辑。
基本上就这些。日常开发优先用 std::queue,学习原理时动手写链表实现会更有收获。
以上就是C++怎么实现一个队列_C++ STL中std::queue或链表实现队列操作的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号