关于堆(优先队列)的 “ < “ 运算符重载问题

默认为大顶堆 ,此时 堆的 “ < ” 的含义为  :

  (1)              若 a < b 为真(返回值为真), 则  b  排在  前面(即堆顶)

当我们想以  重载 " < " 的方式 构建小顶堆

 (2)              我们想要小顶堆 ,说明我们希望     小值   排在  前面

(3)               所以   小值  为      所以 return  a > b

重点抓住,b 是 堆顶元素

你想要小顶堆,就是让b小,就return a > b

你想要大顶堆, 就是让b大,就return a < b

例子:

struct node{
    int val,dis;
    //构建以dis值判断的小顶堆
    bool operator< (const node &b) const {
        return this->dis > b.dis;

}

重载 “ < ” 运算符时:

sort  排序  return a < b  就是 从小到大; return  a > b  就是 从大到小

堆  排序   return  a < b   就是大顶堆 ; return a > b  就是小顶堆

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值