c++ - 从元组中提取多种类型

标签 c++ c++11 tuples

这应该很明显,是否有一些简短的语法来获取子元组?

类似的东西:

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/

相关文章:

c++ - 读取指向函数中的变量时出现段错误

python - 一维数组的形状给出 'tuple' 对象不可调用?

c++ - 测试类型 V 是否属于不带可变参数的元组 <...> 的类型

c++ - 随机递归AVL树高误差

c++ - RobuSTLy 找到 N 个直径相同的圆 : alternative to bruteforcing Hough transform threshold

c++ - 为什么在未计算的操作数中不允许使用 lambda 表达式,但在常量表达式的未计算部分中允许使用 lambda 表达式?

c++ - 连接到由 Boost.Asio 创建的域套接字时权限被拒绝

python - 将元组列表转换为深层嵌套列表

c++ - Dev-C++ 4.9.9.2 项目选项不起作用

c++ - Vista 中提升的进程不会覆盖文件