Pair类模板

好久不见. 提交于 2020-01-23 10:51:54

>Pair的实现是一个结构体而不是一个类<

1、标准头文件 #include<utility> 似乎无需引入该文件,在std命名空间内也有pair类型

2、格式为:template <class T1, class T2> struct pair;

在现实情况中我们可以像类似于STL创建新容器一样创建pair也可以直接使用,如下:

1 pair<int,int> p;
2 pair<int,int> p(10,20);

或者是:

1 map<char,int> m;
2     m.insert(pair<char,int>('a',10));

3、访问方式

对与pair中的两个元素,我们可以使用first和second来进行访问,顾名思义first返回第一个元素,而second返回第二个元素,如:

1 pair<int,int> p(10,20);
2     cout<<p.first<<" "<<p.second<<endl;

4、make_pair:

函数原型template pair make_pair(T1 a, T2 b) { return pair(a, b); }

我们可以通过make_pair生成我们的所需要的pair,对于一般的pair而言,我们如果需要对其进行赋值,则需要:

1 pair<int,int> p;
2     p.first=10,p.second=20;

但如果我们使用make_pair方法,则可以变成如下内容:

1 pair<int,int> p;
2     p=make_pair(10,20);

make_pair本身是接受隐式类型转换的,比如定义的是一个int类型,使用make_pair传入一个float类型的参数,make_pair不会报错,而是回自动的进行一个类型转换,将float变为int,这样可以获得更高的灵活度,同时也会有一些小问题。

5、pair类型实现函数多个返回值

 1 #include<iostream>
 2 #include<string>
 3 #include<utility>
 4   
 5 using namespace std;
 6   
 7 pair<string,int> getClass(int id){
 8     return make_pair("DOTCPP!",id);
 9 }
10   
11 int main(int argc,char **argv){
12     pair<string,int> a;
13     a=getClass(10);
14     cout<<a.first<<" "<<a.second<<endl;
15     return 0;
16 }

输出为:DOTCPP! 10

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!