C++队列类

队列是一种先进先出(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在算法和数据结构中广泛应用。掌握它们的使用可以解决多种实际编程问题。