int、float、string、char、またはその他のプリミティブ データ型を内部に格納できるベクトルが必要です。
そのようなデータ型を宣言するにはどうすればよいですか?
たとえば、std::vector<int> vIntVector;
vIntVector を使用すると、整数のみを格納でき、std::string や float は格納できません。
PS 私は C++11 をサポートしていません
可能なタイプがすでにBoost.Variant
わかっている場合は、使用できます。それ以外の場合は.Boost.Any
ブーストが大きすぎるために使用できない場合でも、使用してください。
それでも使いたくない場合は、それらの実装を見て、それらから学び、独自のクラスを定義してください。
まあ、私が理解したように、配列にさまざまな型の変数を格納したいだけです。残念ながら、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)
しかし、これを使用しないことをお勧めします。必要なものを実装する他の方法を考えてみてください。