greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用
简略图
greater<>()(a, b) a > b 返回true,反之返回false
less<>()(a, b) a < b 返回true,反之返回false
在cmp中使用(正着理解)
规则返回true时a在前,反之b在前
在priority_queue中使用 (反着理解)
规则返回false时a在前,反之b在前
例子
#include <bits/stdc++.h>
using namespace std;
struct g
{
int a, b;
bool operator<(const g &t) const
{
if (a != t.a)
return a < t.a; // (结合priority_queue)形成关于a的最大堆 (直接sort)关于a从小到大
return b > t.b; // (结合priority_queue)这里形成的是 a的最大堆的基础上的 关于b的最小堆 (直接sort)在关于a从小到大的基础上 关于b从大到小
}
};
int main()
{
g t[3] = {{1, 2}, {1, 0}, {4, 8}};
sort(t, t + 3);
cout << t[0].a; // 1
priority_queue<g> pq;
pq.push({1, 2});
pq.push({1, 0});
pq.push({4, 8});
cout << pq.top().a; // 4
}
原文地址:https://blog.csdn.net/m0_73669127/article/details/143924184
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!