优先队列的使用

本文介绍了如何在C++中使用STL的priority_queue进行优先队列操作,包括声明、添加元素、访问顶部元素、移除元素以及检查队列大小和空状态。优先队列适用于需要快速处理最大或最小元素的场景,如任务调度和Dijkstra算法。
摘要由CSDN通过智能技术生成

优先队列是一种特殊的队列,其中的元素被赋予优先级,在出队时,优先级最高的元素最先被移除。在 C++ 中,优先队列通过标准模板库(STL)中的 priority_queue 类模板实现。这里是如何使用优先队列的基本示例:

引入头文件

首先,需要包含优先队列的头文件。

#include <iostream>
#include <queue> // 包含优先队列的头文件

声明优先队列

可以像声明其他容器一样声明一个优先队列。如果不指定比较方式,默认是使用 std::less,这意味着最大元素会先出队。

std::priority_queue<int> pq; // 默认是最大堆,最大的元素总是先出队

如果你想要最小元素优先出队,可以这样声明:

std::priority_queue<int, std::vector<int>, std::greater<int>> minPq; // 最小堆

添加元素

使用 push() 方法向优先队列中添加元素。

pq.push(30);
pq.push(10);
pq.push(20);
pq.push(50);

访问顶部元素

使用 top() 方法可以查看优先队列中的顶部元素(优先级最高的元素)。

std::cout << "Top element: " << pq.top() << std::endl; // 输出: Top element: 50

移除元素

使用 pop() 方法可以移除优先队列中的顶部元素。

pq.pop(); // 移除了50
std::cout << "Top element after pop: " << pq.top() << std::endl; // 输出: Top element after pop: 30

检查优先队列的大小

使用 size() 方法可以获取优先队列中的元素数量。

std::cout << "Priority queue size: " << pq.size() << std::endl;

检查优先队列是否为空

使用 empty() 方法可以检查优先队列是否为空。

if (pq.empty()) {
    std::cout << "Priority queue is empty" << std::endl;
} else {
    std::cout << "Priority queue is not empty" << std::endl;
}

这些是优先队列的基本操作。优先队列通常用于需要快速访问最大或最小元素的场景,如任务调度、带权调度、Dijkstra 算法等。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值