C++ pair型
pair 是 一种模版类型。每个pair 可以存储两个值。
如果一个函数有两个返回值并且是不同类型,一种方法是写个struct ,但为了方便可以使用 c++ 自带的pair型 ,返回一个pair 。
另外,在一个对象有多个属性时 ,一般使用struct ,但是如果只有两个属性的时候,就可以用pair 进行操作。。。
如果有三个属性的话,其实也是可以用pair 。。。。
pair<int ,pair<int ,int > > a;
(后边的两个 > > 要有空格,否则就会是 >> 位移运算符)
生成方法有两种:
pair<int ,int >p (5,6);
pair<int ,int > p1= make_pair(5,6);
对于取值,每个pair 都有两个属性值 first 和second
cout << p1.first << p1.second;
可以理解为struct的两个变量
对于排序函数sort ,pair自带属性为first优先进行升序排序,其次为second进行升序排序,代码举例:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mmm(a,b) memset(a,b,sizeof(a))
#define mk make_pair
#define fi first
#define se second
#define pill pair<int, int>
using namespace std;
int main()
{
pill a[200];
mmm(a,0);
for(int i=1;i<=10;i++){
a[i]=mk(20-i,i);
}
for(int i=1;i<=10;i++){
cout<<a[i].fi<<' '<<a[i].se<<endl;
}cout<<endl;
sort(a+1,a+11);
for(int i=1;i<=10;i++){
cout<<a[i].fi<<' '<<a[i].se<<endl;
}cout<<endl;
a[2].first=10;
sort(a+1,a+11);
cout<<"11 9 change to 10 9"<<endl<<endl;
for(int i=1;i<=10;i++){
cout<<a[i].fi<<' '<<a[i].se<<endl;
}
}