1,元组简介
tuple是一个固定大小的不同类型值的集合。
std::tuple理论上可以有无数个任意类型的成员变量,而std::pair只能是2个成员,因此在需要保存3个及以上的数据时就需要使用tuple元组了。
tuple(元组)在c++11中开始引用的
2,tuple的创建和初始化
1)std::tuple<T1, T2, TN> t1; //创建一个空的tuple对象(使用默认构造),元素分别是T1和T2...Tn类型,采用值初始化。
2)std::tuple<T1, T2, TN> t2(v1, v2, ... TN); //创建一个tuple对象,它的两个元素分别是T1和T2 ...Tn类型; 要获取元素的值需要通过tuple的成员get<Ith>(obj)进行获取
3)std::tuple<T1&> t3(ref&); // tuple的元素类型可以是一个引用
4)std::make_tuple(v1, v2); // 像pair一样也可以通过make_tuple进行创建一个tuple对象
这段代码输出如下:
2 引用和 std::make_tuple结合:
以上代码及其输出可以看出元组的元素和被引用的变量相互影响。
从取地址结果看,两者指向了同一片空间!!!
3 获取tuple值的方法:
1)get<Ith>(obj) 获取,Ith必须编译时确定,
2)利用tie进行解包元素的值,如下代码及其输出可以看出元素和变量之间只是值拷贝
3)解包占位符,通过std::ignore占位无用位置。代码如下
4 获取元素的类型std::tuple_element<position, decltype(tp)>::type
代码如下:
5 获取元组大小 std::tuple_size<decltype(tp)>::value
该值编译时已经确定。