通用工具(1)---Pair
阿新 • • 發佈:2018-11-19
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);
}