#include <bits/stdc++.h>
using namespace std;
struct Person{
string name;
int age;
};
void pair_example(){
vector<Person> people;
people.push_back({"mike",34});
people.push_back({"lili",33});
people.push_back({"anna",32});
for(const auto& p:people){
cout<<p.name<<" "<<p.age<<endl;
}
vector<pair<Person,int>> scores;
scores.push_back(make_pair(people[0],2));//用{people[0],3}也可以
scores.push_back(make_pair(people[1],3));
scores.push_back(make_pair(people[2],4));
for(const auto& s:scores){
cout<<s.first.name<<" "<<s.first.age<<" "<<s.second<<endl;
}
}
int main(){
//pair有两个模版参数,分别表示第一个值和第二个值的类型,first和second分别表示第一个和第二个
pair<int,double> p1(1,3.14);
cout<<p1.first<<p1.second<<endl;
pair<int,string> p2(2,"mike");
cout<<p2.first<<p2.second<<endl;
//pair可以嵌套,赋值里面pair时要使用make_pair函数
pair<int,pair<int,int>> p3(3,make_pair(2,3));
cout<<p3.first<<endl;
cout<<p3.second.first<<endl;
cout<<p3.second.second<<endl;
//pair自带的排序规则:按first升序排序,first相同按second升序排序
//用pair进行排序,借助vector和sort函数
vector<pair<int,int>> vec;
vec.push_back (make_pair(2,3));//给里面的pair赋值时要用make_pair函数
vec.push_back(make_pair(3,4));
vec.push_back(make_pair(4,5));
sort(vec.begin(),vec.end());
for(const auto& p:vec){//打印排序后的vector
cout<<p.first<<p.second<<endl;
}
//使用pair的实例
pair_example();
return 0;
}