堆默认为大顶堆 ,此时 堆的 “ < ” 的含义为 :
(1) 若 a < b 为真(返回值为真), 则 b 排在 前面(即堆顶)
当我们想以 重载 " < " 的方式 构建小顶堆时
(2) 我们想要小顶堆 ,说明我们希望 小值 排在 前面
(3) 所以 小值 为 b 所以 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 就是小顶堆