#include<bits/stdc++.h>
using namespace std;
//pair是将2个数据合成一个数据
int cmp1(pair<int,int>a,pair<int,int>b)
{
if(a.first!=b.first)
return a.first>b.first; //根据first降序
else
return a.second<b.second; //根据second升序
}
struct cmp2
{
bool operator()(const pair<int,int> q1,const pair<int,int>q2)
{
if(q1.first==q2.first)
return q1.second>q2.second; //根据second升序
else
return q1.first<q2.first; //根据first降序
}
};
int main()
{
//1.pair的基本用法
int i;
pair<int,double>p1(1,2.2);
pair<int,double>p2;
p2=p1;
cout<<p2.first<<" "<<p2.second<<endl;
p2=make_pair(1,3);
cout<<p2.first<<" "<<p2.second<<endl;
//2.pair结合其他的用法
pair<int,int>p3[10];
for(i=0; i<5; ++i)
{
p3[i]=make_pair(i,i+1);
}
sort(p3,p3+5,cmp1);
for(i=0; i<5; ++i)
{
cout<<p3[i].first<<" "<<p3[i].second<<endl;
}
cout<<endl;
vector<pair<int,int> >p4;
for(i=0; i<5; ++i)
{
p4.push_back({1,i+1});
p4.push_back(make_pair(i,i+1));
}
sort(p4.begin(),p4.end(),cmp1);
int len=p4.size();
for(i=0; i<len; ++i)
{
cout<<p4[i].first<<" "<<p4[i].second<<endl;
}
cout<<endl;
priority_queue<pair<int,int>,vector<pair<int,int> >,cmp2>p5;
p5.push({2,2});
p5.push({1,2});
p5.push({2,3});
while(!p5.empty())
{
cout<<p5.top().first<<" "<<p5.top().second<<endl;
p5.pop();
}
return 0;
}