1. 程式人生 > >通用工具(1)---Pair

通用工具(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);
}