Tuple
元组类是C++11新引入的结构,它能容纳任意类型的元素,具备很多编译期计算的特性,tuple和其他C++11特性结合能成为更加强大的组件。
本次介绍的是怎样便捷的打印tuple的所有元素。
//递归打印tuple的数据
template<typename Tuple, size_t N>
struct TupleOpt
{
static void printTuple(const Tuple& t)
{
TupleOpt<Tuple, N - 1>::printTuple(t);
cout << " " << std::get<N - 1>(t) << " ";
}
};
//递归终止
template<typename Tuple>
struct TupleOpt<Tuple, 1>
{
static void printTuple(const Tuple& t)
{
cout << std::get<0>(t);
}
};
template<typename ...Args>
void testPrintTuple(const std::tuple<Args...>& tp)
{
//decltype提取类型
TupleOpt<decltype(tp), sizeof...(Args)>::printTuple(tp);
}
int main()
{
std::tuple<int, double, string> tp = std::make_tuple(1, 2.3, "abc");
testPrintTuple(tp);
return 0;
}
测试结果如下: