对于需要比较的函数或STL(最常见的为sort,priority_queue)
要对自创的结构进行运算符重载(sort可以写cmp,一样的效果)
1、只能对小于号重载
cmp函数与其起到相同的作用
2、sort:返回值为真则前后不交换
priority_queue:与sort相反,返回值为真则前后交换
可以通过两者默认相反来记忆
#include <bits/stdc++.h> using namespace std; struct node { int x,y; }; bool operator < (node a,node b) { return a.x*a.y<b.x*b.y; } bool cmp(node a,node b) { return a.x*a.y<b.x*b.y; } int main() { priority_queue<node> que; que.push(node{1,10});que.push(node{2,2});que.push(node{3,5}); vector<node> v; v.push_back(node{1,10});v.push_back(node{2,2});v.push_back(node{3,5}); sort(v.begin(),v.end()); //sort(v.begin(),v.end(),cmp); node a=que.top(); cout << a.x << " " << a.y << endl; cout << v[0].x << " " << v[0].y; return 0; }
对于上述代码,priority_queue输出 3 5
sort 输出 2 2