如何在C ++中获取不同向量的向量

时间:2015-02-17 16:04:51

标签: c++ vector stl

我希望拥有如下表格的C ++表示形式:

0   1   2
=   =   =
1  1.0  a
2  2.0  b
3  3.0  c

必须在运行时从intdoublestring中选择列的类型。

用C ++表达它的最佳方法是什么?

附录:我的真正问题:我想要一个数据库表的列式表示,它可以有任意的SQL类型(我会满足intdoublestring

2 个答案:

答案 0 :(得分:3)

编辑:在运行时创建动态类型的对象,谷歌"工厂模式"。

您需要第一个向量包含一致的类型,因此您可能(在C ++中)希望拥有一个基类并从中派生。我不确定std :: vector类是否有一个无类型的基础(可能)。

所以,你要么围绕一个向量的概念创建一个包装类(yuck),你要创建一个变量类型的向量(yuck),或者你创建一种变量向量(yuck)。我可能会选择后者,因为它是最简单的方法,它仍然具有类型安全向量。

typedef union VectorOfThings {
    std::vector<int> i;
    std::vector<double> d;
    std::vector<string> s;
};
struct TypedVectorOfThings {
    enum Type { ints, doubles, strings };
    Type type;
    VectorOfThings myVector;
};
std::vector<TypedVectorOfThings > myVectorOfVectors;

和品尝季节。但亲爱的上帝啊,它太可怕了。这是用户定义的数据库表的运行时表示吗?

答案 1 :(得分:2)

可能有记录/行类:

struct Record
{
    int col1;
    double col2;
    string col3;
}

std::vector<Record> records;