一、pair简介
pair是一个含有两个数据的数据组,可以看作结构体:
struct pair
{
Etype first:
Etype second;
};
其中Etype是用户自己设置的数据类型,(用pair声明的数组好像只能开到100000)
二、pair的声明与初始化
pair<T1, T2> p1; //创建一个空的pair对象(使用默认构造),
//它的两个元素分别是T1和T2类型,采用值初始化。
pair<T1, T2> p1(v1, v2); //创建一个pair对象,它的两个元素分别是T1和T2类型,
//其中first成员初始化为v1,second成员初始化为v2。
p1=make_pair(v1, v2); // 以v1和v2的值创建一个新的pair对象,其元素类型分别是v1和v2的类型。
p1 < p2; // 两个pair对象间的小于运算,其定义遵循字典次序:
//如 p1.first < p2.first 或者 !(p2.first < p1.first) && (p1.second < p2.second) 则返回true。
p1 == p2; // 如果两个对象的first和second依次相等,则这两个对象相等;该运算使用元素的==操作符。
p1.first; // 返回对象p1中名为first的公有数据成员
p1.second; // 返回对象p1中名为second的公有数据成员
pair<string,int> a[10];
a[0]=make_pair("one",1); //使用make_pair
a[1]=pair<string,int>("tow",2);//使用对象说明
typedef pair<string,string> Author; //使用typedef简化声明
三、一些操作
1、访问两个元素操作可以通过first和sencond访问:
pair<int ,double> p1;
p1.first = 1;
p1.second = 2.5;
cout<<p1.first<<' '<<p1.second<<endl;//输出结果:1 2.5
2、通过tie获取pair元素值
pair<string, int> getPreson()
{
return make_pair("Sven", 25);
}
int main(int argc, char **argv)
{
string name;
int ages;
tie(name, ages) = getPreson();
cout << "name: " << name << ", ages: " << ages << endl;
return 0;
}
4、排序
用sort()排序,默认按照first的值排序
#include<bits/stdc++.h>
using namespace std;
bool cmp(pair<string, int>a, pair<string, int>b)
{
return a.second < b.second;
}//根据second的值升序排序
int main()
{
pair<string,int> a[10];
a[1]=make_pair("one",1); //使用make_pair
a[0]=pair<string,int>("tow",2);//使用对象说明
sort(a,a+2,cmp) ;
cout<<a[0].first;
}