队列是一种先进先出(First In First Out)的数据结构,C++标准模板库中提供了queue类实现队列功能。本文将主要介绍C++ queue的用法。
一、定义队列
#include <queue>
queue<int> q; // int队列
queue封装了底层的deque实现。
二、入队和出队
q.push(1); // 入队
q.push(2);
q.front(); // 返回队头元素
q.back(); // 返回队尾元素
q.pop(); // 出队
三、大小操作
q.size(); // 元素个数
q.empty(); // 判断是否为空
四、优先队列
priority_queue实现了优先队列,默认大顶堆:
priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(2);
pq.top(); // 返回最大元素3
可以自定义比较函数实现小顶堆、自定义元素优先级等。
五、队列适合的场景
- 需要先进先出处理的场景
- BFS广度优先搜索
- 缓冲和任务排队
六、栈类
stack类实现FILO栈:
stack<int> s;
s.push(1); // 入栈
s.pop(); // 出栈
s.top(); // 查看栈顶元素
queue和stack在算法和数据结构中广泛应用。掌握它们的使用可以解决多种实际编程问题。