对于需要比较的函数或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

05-11 19:46