通用工具(1)---Pair

Class Pair (本质是个结构体)可以将两个元素视为一个单元,在c++中经常能看见它的身影比如,map,multimap等等都是使用pair。任何的函数想返回一组数据也需要用到pair。

pair的构造和使用

   pair<double, int > p;//使用默认的方式构造
   //即double()和int()来构造两个值,输出  0,0
   pair<int ,int>  p(10,11);
   pair<int,int>  p2(p)//拷贝构造,也支持move构造
   f({42,"test"});//可以使用初值列来初始化
   p2=p//允许隐式转换
   p<p2//先比较第一个元素,相等则比较第二个
   p==p2
   p1.swap(p2)//交换p1和p2的数据
   

如果你想打印pair,可以重载<<,如下的泛型函数模版

template <typename T1,typename T2>
std::ostream& operator <<(std::ostream & strm, const std::pair<T1, T2> & p)
{
	return strm << "[" << p.first << "," << p.second << "]";
}

当使用比较频繁时候可以使用typedef简化

typedef pair<string, string> author;
autor ("sdad","adad");

数据的获得

   pair<int ,int > p(10,10)
   p.first//获得第一个值
   p.second
   get<0>(p)//获得第一个值
   get<1>(p)
   std::tuple_size<p>::value//获得元素的个数(2)
   std::tuple_element<0,p>::type// 获得第一个元素的类型 (int)

make_pair

make_pair可以比较简单的得到一个pair,make_pair可以返回一个pair

cout <<make_pair(42, 11)<< endl;
pair<int,int> p=make_pair(42, 11);

make_pair的申明如下:

namespace std{
   template <template T1 template T2>
   pair <v1,v2> make_pair(T1 && x,T2 && y);
}

猜你喜欢

转载自blog.csdn.net/qq_35651984/article/details/83692060