C++ 使用std :: tuple
示例
该类型std::tuple可以将任意数量的值(可能包括不同类型的值)捆绑到单个返回对象中:
std::tuple<int, int, int, int> foo(int a, int b) { //或自动(C++14) return std::make_tuple(a + b, a - b, a * b, a / b); }
在C++17中,可以使用大括号的初始化程序列表:
std::tuple<int, int, int, int> foo(int a, int b) { return {a + b, a - b, a * b, a / b}; }
从返回的值中检索值tuple可能很麻烦,需要使用std::get模板函数:
auto mrvs = foo(5, 12); auto add = std::get<0>(mrvs); auto sub = std::get<1>(mrvs); auto mul = std::get<2>(mrvs); auto div = std::get<3>(mrvs);
如果可以在函数返回之前声明类型,则std::tie可以使用这些类型将a解包tuple到现有变量中:
int add, sub, mul, div; std::tie(add, sub, mul, div) = foo(5, 12);
如果不需要返回值之一,std::ignore则可以使用:
std::tie(add, sub, std::ignore, div) = foo(5, 12);
结构化绑定可用于避免std::tie:
auto [add, sub, mul, div] = foo(5,12);