1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c++ 中pair类模板的用法详解

c++ 中pair类模板的用法详解

时间:2019-12-23 22:40:10

相关推荐

c++ 中pair类模板的用法详解

pair:

头文件:#include<utility>

类模板:template <class T1, class T2> struct pair

参数:T1是第一个值的数据类型,T2是第二个值的数据类型。

功能:pair将一对值组合成一个值,这一对值可以具有不同的数据类型(T1和T2),两个值可以分别用pair的两个公有函数first和second访问。

具体用法:

1.实例化:

[cpp]view plaincopy print? pair<string,string>p1("hello","word");//调用defaultconstructorpair<double,int>p2(1.0,1);//调用constructorpair<double,int>p3(p2);//调用copy

pair<string,string> p1("hello","word"); //调用default constructorpair<double,int> p2(1.0,1);//调用constructorpair<double,int> p3(p2); //调用 copy

2.对象的赋值以及make_pair()的应用:

[cpp]view plaincopy print? pair<string,string>p1;pair<string,string>p2("good","good");p1=p2;p1=make_pair("hello","word");p1=pair<string,string>("nice","nice");

pair<string,string> p1;pair<string,string> p2("good","good");p1= p2;p1= make_pair("hello","word");p1 = pair<string,string>("nice","nice");

3.pair中元素的访问(first & second):

[cpp]view plaincopy print? pair<double,int>p1(1.0,2);pair<string,string>p2("hello","word");inti=p1.second;//i=2doubled=p1.first;//d=1.0strings1=p2.first;//s1=hellostrings2=p2.second;//word

pair<double,int> p1(1.0,2);pair<string,string> p2("hello","word");int i = p1.second; // i = 2double d = p1.first; // d = 1.0string s1 = p2.first; // s1 = hellostring s2 = p2.second; // word

4.pair数组与元素排序:

[cpp]view plaincopy print? #include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;pair<int,int>pa[100];intcmp(pair<int,int>a,pair<int,int>b){if(a.first!=b.first)returna.first>b.first;elsereturna.second<b.second;}intmain(){inta,b;for(inti=0;i<5;i++)scanf("%d%d",&a,&b),pa[i]=make_pair(a,b);sort(pa,pa+5,cmp);for(inti=0;i<5;i++)printf("%d%d\n",pa[i].first,pa[i].second);return0;}

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;pair<int,int>pa[100];int cmp(pair<int,int>a,pair<int,int>b){if(a.first!=b.first)return a.first>b.first;else return a.second<b.second;}int main(){int a,b;for(int i=0;i<5;i++)scanf("%d%d",&a,&b),pa[i]=make_pair(a,b);sort(pa,pa+5,cmp);for(int i=0;i<5;i++)printf("%d %d\n",pa[i].first,pa[i].second);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。