我需要一个可以存储int或float或者字符串或char或其他任何原始数据类型的向量。
如何声明这样的数据类型?
例如,如果我使用std::vector<int> vIntVector;
vIntVector只能存储整数,而不能存储std :: string或浮点数。
P.S。我没有C ++ 11支持
答案 0 :(得分:10)
如果您已经知道可能的类型,则可以使用Boost.Variant
。否则使用Boost.Any
。
如果你不能使用Boost,可能是因为它太大了,那么仍然使用它!
如果您仍然不想使用它,请参阅它们的实现,向它们学习,然后定义自己的类。
答案 1 :(得分:1)
好吧,据我所知,你只想要一个数组来存储不同类型的变量。不幸的是,在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)
但我建议你不要使用它。试着考虑其他方式来实现你需要的东西。