gpt4 book ai didi

c++ - 将不同的 std::tuple 类型存储在数组、 vector 或?

转载 作者:行者123 更新时间:2023-11-28 01:23:22 24 4
gpt4 key购买 nike

在最新的 C++ 版本(我猜是 17 或 20)中有什么方法可以将不同种类的元组存储在 std::array 或 std::vector 或其他内置数据类型中?例如可能是 ->

struct bunchOfTuples {
std::tuple<float, float, int, int> firstTup = std::make_tuple(float, float, int, int);
std::tuple<float, float, int> secondTup = std::make_tuple(float, float, int); };
// bunch more tuples of differing types
};

有没有什么方法可以使用模板来实现类似的功能?还是类或结构实现?或者我没有想到的另一种方式是我对最新的 C++ 东西有点陌生?我正在研究一个自动方法调用项目。我有一些基本上可以用的东西,但这会使它更干净。

最佳答案

数组、 vector 和实际上所有标准容器都是同类的。这意味着容器的所有元素都具有相同的类型。 std::tuple 模板的不同实例是不同的类。因此,它们不能存储在一个数组中。

C++ 确实有异构包装器:std::variantstd::any。 Variant 是标记 union 的实现。它可用于存储来自预定义类型列表的对象。 anyvoid* 的类型安全包装器。它可以存储任何类型的对象。因此,变体或 any 的容器可能对您有用。

虽然它们只是低级工具,但对于更具特色的异构处理,有现有的库,例如 Boost.Hana。

关于c++ - 将不同的 std::tuple 类型存储在数组、 vector 或?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55130406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com