1

我需要一个可以在自身内部存储 int 或 float 或 string 或 char 或任何其他原始数据类型的向量。

如何声明这样的数据类型?

例如,如果我使用std::vector<int> vIntVector;vIntVector 只能存储整数,不能存储 std::string 或浮点数。

PS 我没有 C++11 支持

4

2 回答 2

10

Boost.Variant如果您已经知道可能的类型,则可以使用。其他使用Boost.Any

如果你不能使用 Boost,可能是因为它太大了,那就继续使用吧!

如果您仍然不想使用它,请查看它们的实现,向它们学习,然后定义您自己的类。

于 2013-11-12T11:27:15.347 回答
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)

但我建议你不要使用它。尝试考虑其他方式来实现您所需要的。

于 2013-11-12T15:51:11.607 回答