queue 队列容器 —— 先进先出的数据结构
·
一、什么是队列
队列是一种先进先出(FIFO, First In First Out)的线性数据结构。
- 就像我们排队买奶茶:
- 先来的人先买到(先出)
- 后来的人排在队尾(后入)
队列的两个核心操作:
| 操作 | 说明 |
|---|---|
push(x) | 从队尾加入元素 |
pop() | 从队头移除元素 |
注意:不能随机访问中间元素,也不能从队尾删除或队头插入!
二、C++ STL 中的 queue
在 C++ 中,queue 是一个容器适配器,它默认基于 deque(双端队列)实现,也可以指定其他底层容器(如 list)。
需要引用头文件·
#include <queue>
声明方式
std::queue<int> q; // 默认使用 deque
std::queue<int, std::list<int>> q2; // 使用 list 作为底层容器
一般就使用queue<int> q就可以了
三、常用成员函数与示例
| 函数 | 作用 | 时间复杂度 |
|---|---|---|
push(x) | 入队(队尾添加) | O(1) |
pop() | 出队(队头删除) | O(1) |
front() | 获取队头元素 | O(1) |
back() | 获取队尾元素 | O(1) |
empty() | 判断是否为空 | O(1) |
size() | 返回元素个数 | O(1) |
代码样例如下:
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
// 入队
q.push(10);
q.push(20);
q.push(30);
cout << "队头: " << q.front() << endl; // 输出: 10
cout << "队尾: " << q.back() << endl; // 输出: 30
cout << "大小: " << q.size() << endl; // 输出: 3
// 出队
while (!q.empty()) {
cout << q.front() << " ";
q.pop();
}
// 输出: 10 20 30
return 0;
}
六、注意事项 & 常见误区
| 误区 | 正确做法 |
|---|---|
试图用 q[0] 访问元素 | 只能用 front() 和 back() |
忘记判空就调用 front() 或 pop() | 先 if (!q.empty()) |
| 想遍历队列 | queue 不支持迭代器!如需遍历,考虑用 deque 或转存到 vector |
混淆 queue 和 priority_queue | priority_queue 是堆,默认大顶堆,不是 FIFO! |
以上就是关于队列queue的一些基本使用,接下来会更新关于queue的一些题目
更多推荐

所有评论(0)