【发布时间】:2019-10-22 17:23:50
【问题描述】:
我想创建一个向量的向量,其中各个向量可以是不同的类型,如下所示:
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 在这种情况下应该是什么?
我的实际用例:
我有不同数据类型的向量需要写入磁盘。每次我向数据集添加一列时,我都不想在不同的地方指定该列。我希望能够轻松地遍历列。
【问题讨论】:
-
std::variant?但我真的很好奇你需要解决的真正的问题? 为什么你认为你需要这样一个向量? -
你怎么知道从
all[1]回到std::vector<float>? -
不要。这不是语言从头开始构建的方式。我的建议是找到一个允许更多惯用 C++ 代码的不同设计。这当然是可能的,但很难使用和维护。
-
“向数据集添加列”是在编译时发生还是在运行时发生?听起来你在描述
struct Row { int a; float x; double price; }; std::vector<Row> all; -
是的,这就是我所拥有的。但是在写出这些值时,我有单独的向量需要获取结构的各个值。理想情况下,我可以遍历结构成员。