我想要一个 C++ 表示的表,如下所示:
0 1 2
= = =
1 1.0 a
2 2.0 b
3 3.0 c
列的类型必须从int
, double
or string
在运行时。
用 C++ 表达它的最佳方式是什么?
附录:我真正的问题:我想要一个数据库表的列式表示,它可以有任意的 SQL 类型(我会满足int
, double
and string
).
编辑:要在运行时创建动态类型的对象,请搜索“工厂模式”。
您需要第一个向量包含一致的类型,因此您可能(在 C++ 中)希望拥有一个基类并从中派生。我不确定 std::vector 类是否有一个非类型化的基类(可能有)。
因此,您要么围绕向量的概念创建一个包装类(恶心),要么创建一个变体类型的向量(恶心),要么创建某种变体向量(恶心)。我可能会选择后者,因为它是最简单的方法,其中仍然包含类型安全向量。
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;
并调味。但是天哪,这太可怕了。这是用户定义的数据库表的运行时表示还是其他什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)