我需要一个可以在自身内部存储 int 或 float 或 string 或 char 或任何其他原始数据类型的向量。
如何声明这样的数据类型?
例如,如果我使用std::vector<int> vIntVector;
vIntVector 只能存储整数,不能存储 std::string 或浮点数。
PS 我没有 C++11 支持
Boost.Variant
如果您已经知道可能的类型,则可以使用。其他使用Boost.Any
。
如果你不能使用 Boost,可能是因为它太大了,那就继续使用吧!
如果您仍然不想使用它,请查看它们的实现,向它们学习,然后定义您自己的类。
好吧,据我了解,您只需要一个数组来存储不同类型的变量。不幸的是,在 C++ 中没有简单的方法可以做到这一点。我可以建议您以下解决方案。
struct Var{
enum {INT, FLOAT, BYTE} type;
union{
int integer;
float decimal;
unsigned char byte;
};
Var(int v):type(INT), integer(v){}
Var(float v):type(FLOAT), decimal(v){}
Var(unsigned char v):type(BYTE), byte(v){}
};
...
std::vector<Var> arr;
arr.push_back(1); // Push integer
arr.push_back(12.f); // Push float
arr.push_back('a'); // Push char(byte)
但我建议你不要使用它。尝试考虑其他方式来实现您所需要的。