首先以第一关键字从大到小,第一关键字相同时,按第二关键字从小到大
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
class cmp {
public:
bool operator()(const pii &n1,const pii &n2)const {
if(n1.first != n2.first)
return n1.first < n2.first;
return n1.second > n2.second;
}
};
int main() {
priority_queue<pii,vector<pii>,cmp>q;
q.push({1,5});
q.push({5,2});
q.push({5,4});
while(q.size()) {
cout<<q.top().first<<' '<<q.top().second<<'\n';
q.pop();
}
return 0;
}
运行结果
5 2
5 4
1 5
首先以第二关键字从小到大,第二关键字相同时,按第一关键字从大到小
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
class cmp {
public:
bool operator()(const pii &n1,const pii &n2)const {
if(n1.second != n2.second)
return n1.second > n2.second;
return n1.first < n2.first;
}
};
int main() {
priority_queue<pii,vector<pii>,cmp>q;
q.push({1,5});
q.push({5,2});
q.push({5,5});
while(q.size()) {
cout<<q.top().first<<' '<<q.top().second<<'\n';
q.pop();
}
return 0;
}
运行结果
5 2
5 5
1 5