C++中有 std::pair,C++11增加了std::tuple,是对std::pair的泛化。
一 简介
1 头文件<tuple>
2 声明
template<class ... Types> class tuple;
二 tuple定义及初始化的几种方式
1 模板实例化
这个对使用tuple来说是比较笨重的方法,不展开。
2 使用std::make_tuple
auto t = std::make_tuple(1, "jack", 89.5);
3 使用std::tie
int num;
std::string name;
double score;
......
auto t1 = std::tie(num, name, score);
4 使用std::tuple_cat
std::tuple<int, std::string, float> t1(10, "Test", 3.14);
int n = 7;
auto t2 = std::tuple_cat(t1, std::make_pair("Foo", "bar"), t1, std::tie(n));
t2的值:(10, Test, 3.14, Foo, bar, 10, Test, 3.14, 7)
三 tuple元素访问的两种方式
1 跟std::pair一样,使用std::get进行访问
cout << " std::get<0>(t) " << std::get<0>(t) << std::endl;
cout << " std::get<1>(t) " << std::get<1>(t) << std::endl;
cout << " std::get<2>(t) " << std::get<2>(t) << std::endl;
2 使用std::tie进行访问
int num;
std::string name;
double score;
std::tie(num, name, score) = t;
cout << "num: " << num << std::endl;
cout << "name: " << name << std::endl;
cout << "score: " << score << std::endl;
四 参考
五 延伸