priority_queue<int, vector<int> , greater<int> > euq;从小到大排序
priority_queue<int, vector<int> , less<int> > que; 从大到小排序
对于这种情况:
#include<iostream>
#include <queue>
#include <algorithm>
using namespace std;
typedef pair<int,int> p;
bool cmp(const p &a,const p &b)
{
if(a.first==b.first)
return a.second>b.second;//当a 相等时,b按从大到小排序---这与下面的两个案例相反
return a.first<b.first;// a 按从小到大排序---这与下面的两个案例相反
}
p a[100];
int main()
{
a[1]=make_pair(1,2);
a[2]=make_pair(1,3);
a[3]=make_pair(2,3);
a[4]=make_pair(2,2);
a[5]=make_pair(1,8);
sort(a+1,a+6,cmp);//这里的a+1与a+6分别指向的是a[1]这个位置和a[5]这个位置,然后将其排序
for(int i=1;i<=5;i++)
cout<<a[i].first<<" "<<a[i].second<<endl;
return 0;
}
输出结果: