1.C++11中提供的tuple类型,即元组,该类型类似于pair类型,可以存放不同类型的变量,不同之处是它没有数量限制。该类型定义在头文件tuple中。
2.tuple类型支持常见的操作,如==
、!=
、get<i>(t);//获取t中第i个值
等。
3.tuple中不但可以存储右值,而且可以存储左值。可以利用tuple让函数一次返回多个值。
4.一个tuple使用的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <iostream> #include <tuple> #include <string> #include <vector> #include <list>
int main(void) { std::tuple<int, std::string, std::vector<double>, std::list<int>> tuVal(5, "blueyi", {0.1, 0.2, 0.3, 0.4}, {1, 2, 3, 4}); typedef decltype(tuVal) tuType; int cnt = std::tuple_size<tuType>::value; std::cout << cnt << std::endl; std::tuple_element<0, tuType>::type ti = std::get<0>(tuVal); std::cout << "0: " << ti << std::endl; std::tuple_element<1, tuType>::type ts = std::get<1>(tuVal); std::cout << "1: " << ts << std::endl;
std::tuple_element<2, tuType>::type tv = std::get<2>(tuVal); std::cout << "2: " << std::endl; for (auto t : tv) { std::cout << t << " "; } std::cout << std::endl; std::tuple_element<3, tuType>::type tl = std::get<3>(tuVal); std::cout << "3: " << std::endl; for (auto t : tl) { std::cout << t << " "; } std::cout << std::endl; return 0; }
|