因不会大<|故后面所有<|都加了个无意义的|
1.作用:pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同。如果一个函数有两个返回值的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就可以使用 c++自带的pair ,返回一个pair,其中带有两个值。除了返回值的应用,在一个对象有多个属性的时候 ,一般自己写一个struct ,如果就是两个属性的话,就可以用pair 进行操作。pair 可以省的自己写一个struct .如果有三个属性的话,其实也是可以用的pair 的 ,极端的写法 pair <int ,pair<int ,int > >
写法极端。(后边的两个 > > 要有空格,否则就会是 >>位移运算符)
2.头文件:#include<utility>
3.定义方法:
pair<int, string> a;
表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。
pair<|string, string> a(“James”, “Joy”);
也可以像上面一样在定义的时候直接对其初始化。
4.常用操作:
(1)对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员
pair</string, string> a(“Lily”, “Poly”);
string name;
name = pair.second;
a.first 返回Lily
a.second 返回 Poly
(2)生成新的pair对象
可以使用make_pair对已存在的两个数据构造一个新的pair类型:
int a = 8;
string m = “James”;
pair<|int, string> newone;
newone = make_pair(a, m);
(3)两个pair对象之间的小于运算
p1<|p2
其定义遵循字典次序:如果p1.first<|p2.first 或者 !(p2.first<|p1.first)&&p1.second<|p2.second,则返回true.
p1==p2
如果两个pair对象的first和second成员依次相等,则这两个对象相等。
例:
#include <utility>
#include <iostream>
using namespace std;
typedef pair<string, string> au; //利用typedef简化其声明
int main()
{
int flag;
string x1,x2;
pair<string, string> p1("a","bc"); //创建一个pair对象,它的两个元素分别为string和string类型,其中first成员初始化为“a”,而second成员初始化为“ab”
au p2("a","aa");
au p3;
string name;
name=p1.second; //返回1中名为second的数据成员
cout<<p1.first<<endl;
cout<<name<<endl;
flag=p1<p2;
cout<<flag<<endl; //判断两个pair对象的大小按字典次序
flag=p1>p2;
cout<<flag<<endl;
while(cin>>x1>>x2)
{
p3=make_pair(x1,x2); //生成一个新的pair对象
cout<<p3.first<<"****"<<p3.second<<endl;
}
return 0;
}