优先队列+运算符重载

1.一般的结构体的运算符重载(从小到大排序)是这样的:

2.但是优先队列(默认大根堆)的运算符重载(从小到大排序)却是这样的:

 眼尖的你肯定发现了重载的不同,即return 里的<和>是反的。那我们就讲讲区别吧:

1.普通的数组用sort函数排序时:

bool operator<(const 结构名 &参数)const  处的<为优先级,指的是前面元素的优先级<后面。那么return y<a.y;就是说前面的值小于后面。---->换句话说就是优先级小的值也小,也就是普通数组的从小到大排序。

 2.优先队列:

同样的,bool operator<(const 结构名 &参数)const  处的<为优先级,指的是小于号前面元素的优先级<后面。return y>a.y;就是说小于号前面的值大于后面。(operator小于号后面的元素优先级更大)---->换句话说就是优先级大的值小,因为优先队列(大or小根堆)前面元素的优先级大,也就是优先级从大到小,值从小到大排序。

总结:优先队列return的符号和实际的排序相反,除非你写伪函数结构体&优先队列 自定义排序_guozuofeng的博客-优快云博客_优先队列结构体排序

看到这里,不给个赞嘛

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值