ランタイムでキーと値のデータ型を指定して、以下のように c++ stl std::map(s) を作成するにはどうすればよいですか。
std::map<keyT, valueT>
keyT と valueT のデータ型は実行時に明確になり、さまざまなデータ型に従っていくつかのマップ インスタンスを作成したいと考えています。これどうやってするの?
ランタイムでキーと値のデータ型を指定して、以下のように c++ stl std::map(s) を作成するにはどうすればよいですか。
std::map<keyT, valueT>
keyT と valueT のデータ型は実行時に明確になり、さまざまなデータ型に従っていくつかのマップ インスタンスを作成したいと考えています。これどうやってするの?
C++ テンプレートは、クラスや関数の単なる設計図です。
プログラムにテンプレート定義があっても、コンパイラがそれらのコードを生成するわけではありません。
コンパイラは、テンプレートがインスタンス化されている場合、つまり、パラメータを実際のデータ/クラス タイプに置き換えてテンプレートを使用する場合にのみコードを生成します。
これらの情報がないと、コンパイラはコードを生成できません。実際に家を建てるには、設計図だけでなく、レンガとモルタルが必要です。
boost::any
次のようなこのタスクに役立つかもしれません
typedef std::map<int, boost::any> MyIntMap;
実際には、decltype を使用して他の変数型に基づいたテンプレート引数を使用してマップを宣言できます (c++11 の場合)。このページhttp://www.cprogramming.com/c++11/c++11-auto-decltype-を参照してください。 return-value-after-function.htmlただし、c ++ 98を参照している場合は正しいです。その場合、それは不可能です