【C++】自主实现优先级队列priority_queue

大家好,我是苏貝,本篇博客带大家了解C++的自主实现优先级队列priority_queue,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
在这里插入图片描述


我们来实现下面5个成员函数
在这里插入图片描述

先实现不带仿函数的priority_queue,最后再加上仿函数。我们直接用其它容器来实现优先级队列

在这里插入图片描述

(A) empty/size/top

以下3个成员函数可以直接复用容器_con的成员函数

在这里插入图片描述

(B) push

往优先级队列插入,即往一个大堆中插入数据
思路:先在堆的最后插入数据,再不断向上调整

在这里插入图片描述

在这里插入图片描述

注意:向上调整adjust_up的循环条件不能写成parent>=0,因为parent是size_t类型的,永远>=0。

© pop

往优先级队列pop,即删除堆顶的元素
思路:先不删除堆顶的元素a,将它与堆的最后一个数据b交换位置,再删除a,最后将b不断向下调整

在这里插入图片描述

在这里插入图片描述

将上面5个函数都写完了,就可以开始使用自主实现的优先级队列了

在这里插入图片描述

(D) 仿函数

我们现在加上仿函数,优先级队列的仿函数有缺省值less,表示大堆存储。仿函数greater,表示小堆存储
在这里插入图片描述
在这里插入图片描述

有了仿函数,我们的adjust_up和adjust_down就要调整一下了

在这里插入图片描述
在这里插入图片描述

下面来使用

在这里插入图片描述

在这里插入图片描述


好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值