C++ pair用法
Posted lvmf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ pair用法相关的知识,希望对你有一定的参考价值。
pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。
1 pair的应用
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair。
(1)STL中的map就是将key和value放在一起来保存。
(2)另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。
2:初始化
初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下:
template pair make_pair(T1 a, T2 b) { return pair(a, b); }
1、pair的创建和初始化
pair包含两个数值,与容器一样,pair也是一种模板类型。但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同
pair<string,string>anon; pair<string,int>word_count; pair<string, vector<int> >line;
当然也可以在定义时为每个成员提供初始化式:
pair<string,string>author("James","Joy");
pair类型的使用相当的繁琐,如果定义多个相同的pair类型对象,可以使用typedef简化声明:
typedef pair<string,string> Author; Author proust("March","Proust"); Author Joy("James","Joy");
2、pair对象的操作
对于pair类,可以直接访问其数据成员:其成员都是公有的,分别命名为first和second,只需要使用普通的点操作符
string firstBook; if(author.first=="James" && author.second=="Joy") firstBook="Stephen Hero";
3、生成新的pair对象
除了构造函数,标准库还定义了一个make_pair函数,由传递给它的两个实参生成一个新的pair对象
pair<string, string> next_auth; string first,last; while(cin>>first>>last) { next_auth=make_pair(first,last); //... }
还可以用下列等价的更复杂的操作:
next_auth=pair<string,string>(first,last);
由于pair的数据成员是公有的,因而可如下直接地读取输入:
1 pair<string, string> next_auth; 2 while(cin>>next_auth.first>>next_auth.last) { 3 //... 4 }
以上是关于C++ pair用法的主要内容,如果未能解决你的问题,请参考以下文章
C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)