sort重载运算符对于a,b来说 a<b是升序 ,
但是对于priority_queue就是a<b是降序
sort
sort(nums.begin() , nums.end() , cmp);
static bool cmp(int a,int b){
return a<b; //升序
}
priority_queue
写法一: 重载< 写在结构体里面 需要两个const 而且是引用
//先按照x升序排列,再按照y升序排列
//写法一:
struct Point{
int x;
int y;
bool operator<(const Point& p) const{
if(x!=p.x) return x>p.x;
else return y>p.y;
}
};
priority_queue<Point> pq;
写法二: 重载< 写在结构体外面
//先按照x升序排列,再按照y升序排列
//写法二:
struct Point{
int x;
int y;
};
bool operator<(const Point& p1,const Point& p2){
if(p1.x!=p2.x) return p1.x>p2.x;
else return p1.y>p2.y;
}
priority_queue<Point> pq;
写法三: 重载()
//先按照x升序排列,再按照y升序排列
//写法三:
struct Point{
int x;
int y;
};
struct cmp{
bool operator()(const Point& p1,const Point& p2){
if(p1.x!=p2.x) return p1.x>p2.x;
else return p1.y>p2.y;
}
};
priority_queue<Point> pq;