C++中priority_queue的基本使用

 我来答
世纪网络17
2022-06-10 · TA获得超过5946个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:142万
展开全部

priority_queue是用堆实现的。堆是一种树形结构,支持用O(1)时间获取Max/Min,并且其插入和删除的时间复杂度都是log(N)。优先队列的队首元素一定是当前队列中 优先级 最高的那一个。要使用priority_queue需要 #include <queue> 并加上 using namespace std;

PS: 堆是支持用Log(N)的时间复杂度删除特定元素,而priority_queue只能删除顶点元素。为实现删除特定元素的功能,可参考以下2篇文章。
参考1
参考2

(2) 在结构体外写一个cmp结构体(本质上也是对 < 进行运算符重栽)

本质上来说, priority_queue(堆) 适用于需要不断获取元素集中 Min/Max 的场景。比如priority_queue可用于Dijkstra算法的优化,可将其从 优化至 乃至 (使用binary heap可优化至 ,Fibonacci heap可优化至 )。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式