对于需要比较的函数或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{,});que.push(node{,});que.push(node{,}); vector<node> v;
v.push_back(node{,});v.push_back(node{,});v.push_back(node{,});
sort(v.begin(),v.end());
//sort(v.begin(),v.end(),cmp); node a=que.top();
cout << a.x << " " << a.y << endl;
cout << v[].x << " " << v[].y; return ;
}
对于上述代码,priority_queue输出 3 5
sort 输出 2 2