正确使用std::tuple
Using std::tuple correctly?
我最近学习了如何使用std::tuple(在此之前我从未使用过它),并且很好奇什么时候在容器上使用它是合适的?我之所以问这个问题,是因为std::tuple感觉不像一个容器,因为它需要std::get和std::make_tuple之类的东西。
std::tuple
包含固定数量的不同类型的元素。当您想要将几个不同类型的对象组合在一起时,可以使用它。当分组没有任何特别有用的语义时,我会在struct
上使用它。例如,当一个函数需要返回多个对象时,std::tuple
是有用的。另一方面,容器包含多个相同类型的元素(可能数量不同)。
它更像是结构体而不是容器的替代品。但是,在大多数情况下,出于可读性的考虑,您最好定义一个结构体。元组最适合用于参数数量可变的模板中。
相关文章:
- 为什么我不能在 constexpr lambda 函数中使用 std::tuple
- 在 std::tuple 上使用 std::variant 的问题
- 在构造函数中使用可变参数初始化 std::tuple
- 转发复制的 std::tuple
- 我可以将新的 std::tuple 放入内存映射区域,并在以后读回吗?
- std::tuple 可以根据其值在编译时/运行时排序吗?
- 返回 std::tuple 中的引用和值
- 如何将 boost::hana::tuple 转换为 std::变体
- 如何从可变参数模板参数创建 std::tuple<>?
- std::tuple 的自定义哈希不适用于unordered_set
- 为什么基于 int 的访问不适用于 std::get(std::tuple)?
- 带有引用的std::tuple在clang中编译失败,但在gcc中编译失败
- 尝试实现std::tie和std::tuple的小版本
- std::tuple默认构造函数,带有move可构造元素
- 来自带有 std::tuple 的地图
- Visual Studio 2017 STL 可视化工具失败了一个 std::map<MyIntrusivePtr, std::tuple<....> >
- 如何从 std::async 任务返回 std::tuple
- 为什么 std::when_any 使用 std::tuple 而不是 std::vector 作为其结果类型?
- 为什么 std::integral_constant 在爆炸 std::tuple 时是必需的?
- 创建 boost::tuple<std::string、std::string、int> 和 std::vector <int>的映射