一、介绍
pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair。当然你也可以自定义一个结构体struct。不过大家都是为了方便,所以就直接用pair了。
pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
其标准库类型--pair类型定义在#include <utility>头文件中,定义如下:
类模板:
template<class T1,class T2> struct pair
参数:T1是第一个值的数据类型,T2是第二个值的数据类型。
二、构造函数
pair<T1, T2> p1; //创建一个空的pair对象(使用默认构造),它的两个元素分别是T1和T2类型,采用值初始化。
pair<T1, T2> p1(v1, v2); //创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。
make_pair(v1, v2); // 以v1和v2的值创建一个新的pair对象,其元素类型分别是v1和v2的类型。
make_pair的用法
无需写出型别, 就可以生成一个pair对象
例:
std::make_pair(42, '@');
而不必费力写成:
std::pair<int, char>(42, '@')
当有必要对一个接受pair参数的函数传递两个值时, make_pair()尤其显得方便,
void function(std::pair<int, const char*>);
void foo{
function(std::make_pair(42, '@')); //pass two values as pair
}
三、使用
pair<int, double> p1;
p1 = make_pair(1, 1.2);
cout << p1.first << p1.second << endl;
//output: 1 1.2
int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);
cout << newone.first << newone.second << endl;
//output: 8 James
在某些清况函数会以pair对象作为返回值时,可以直接通过std::tie进行接收。比如
#include <utility>
#include <iostream>
using namespace std;
std::pair<std::string, int> getPreson() {
return std::make_pair("Sven", 25);
};
int main(int argc, char **argv) {
std::string name;
int ages;
std::tie(name, ages) = getPreson();
std::cout << "name: " << name << ", ages: " << ages << std::endl;
return 0;
}
参考:
https://blog.csdn.net/weixin_42825576/article/details/81571419
https://blog.csdn.net/sevenjoin/article/details/81937695
到此这篇关于C++ pair的用法案例详解的文章就介绍到这了,更多相关C++ pair的用法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!