Pair
类模板:
template<class T1,class T2>struct pair
参数:
T1是第一个值的数据类型,T2是第二个值的数据类型。
作用:将两个元素(可以是不同类型的元素)整合为一种。
用法:
1.怎么构造这样一个类型(定义方法):
方法1:
pair <int ,double>p1;
pair<int ,int >p2;
pair<string ,string>p3;
方法2:
通过typedef简化声明定义
typedef pair<string, string>author;
author pro("May", "Lily");
author joye("James", "Joyce");
方法3:
pair类数组的定义方法:
#include <bits/stdc++.h>
using namespace std;
int main()
{
pair<int ,int >a[4];
for(int i=1;i<=3;i++)
{
scanf("%d%d",&a[i].first,&a[i].second);
printf("first=%d second=%d\n",a[i].first,a[i].second);
}
return 0;
}
2.赋值方法:
方法1:
pair<int ,double >p1;
p1.first=1;
p1.second=2.2;
方法2:
利用make_pair(a1,a2)
pair<int, double> p1;
p1 = make_pair(1, 1.2);
方法3:
这种是用于一个pair给另一个pair赋值:
pair<int, double> p1(1, 1.2);//定义时赋值
pair<int, double> p2 = p1;//类对类赋值
3.输出方式:
cout<<p1.first<<p1.second;
4.技巧:
在运用中可以通过构造下图这样的pair进行装入三个数据。
如果数据再多的话就不建议使用pair了,搞一个结构体也不是很费事鸭。
pair <int ,pair<int ,int > >
5.pair的运算方式:
在中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=
其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑。当然,也可以通过重载这几个运算符来重新指定自⼰的比较逻辑。
例:
if(p1>p2) cout<<"p1"<<endl;
else if(p2>p1) cout<<"p2"<<endl;
else cout<<"equal"<<endl;