1

int、float、string、char、またはその他のプリミティブ データ型を内部に格納できるベクトルが必要です。

そのようなデータ型を宣言するにはどうすればよいですか?

たとえば、std::vector<int> vIntVector;vIntVector を使用すると、整数のみを格納でき、std::string や float は格納できません。

PS 私は C++11 をサポートしていません

4

2 に答える 2

10

可能なタイプがすでにBoost.Variantわかっている場合は、使用できます。それ以外の場合は.Boost.Any

ブーストが大きすぎるために使用できない場合でも、使用してください。

それでも使いたくない場合は、それらの実装を見て、それらから学び、独自のクラスを定義してください。

于 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 に答える