gpt4 book ai didi

c++ - 模板 vector 的 vector

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:11 25 4
gpt4 key购买 nike

我想创建一个 vector 的 vector ,其中各个 vector 可以是不同的类型,如下所示:

std::vector<int> v1;
std::vector<float> v2;
std::vector<double> v3;

std::vector<SomeType> all;
all.push_back(v1);
all.push_back(v2);
all.push_back(v3);

在这种情况下,SomeType 应该是什么?

我的实际用例:

我有不同数据类型的 vector 需要写入磁盘。每次我向数据集添加一列时,我都不想在不同的地方指定该列。我希望能够轻松地遍历列。

最佳答案

有很多方法可以做到这一点,具体取决于您的情况。这是 std::variant 的变体(双关语):

std::vector<int> v1 = { 1, 2, 3 };
std::vector<float> v2 = { 4.5f, 5.5f, 6.5f };
std::vector<double> v3 = { 7.5, 8.5, 9.5 };

std::vector<std::variant<std::vector<int>, std::vector<float>, std::vector<double>>> all;
all.push_back(v1);
all.push_back(v2);
all.push_back(v3);

for(auto& variant : all)
{
std::visit([](const auto& container) {
for(auto value : container)
{
std::cout << value << '\n';
}
}, variant);
}

std::any使用类型删除也可以。或者再低一级,f.i.与 std::vector<std::variant<int, float, double>> .

关于c++ - 模板 vector 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490318/

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