这应该很明显,是否有一些简短的语法来获取子元组?
类似的东西:
std::tuple<std::string, double, int> myTuple;
std::tuple<std::string, int> subTuple = std::get<std::string, int>(myTuple);
最佳答案
您需要制作自己的模板函数,下面的实现需要 C++14(因为它需要 std::get<T>
,您可以自己在 C++11 中实现):
template<typename... R, typename ...Args>
std::tuple<R...> sub_tuple(const std::tuple<Args...>& original) {
return std::make_tuple(std::get<R>(original)...);
}
int main()
{
std::tuple<std::string, double, int> myTuple = std::make_tuple("Hello", 1201.0, 51);
std::tuple<std::string, int> subTuple = sub_tuple<std::string, int>(myTuple);
std::cout << std::get<0>(subTuple) << " " << std::get<1>(subTuple);
}
注意:这将为原始元组中的每个元素创建一个拷贝
关于c++ - 从元组中提取多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583755/