1

ランタイムでキーと値のデータ型を指定して、以下のように c++ stl std::map(s) を作成するにはどうすればよいですか。

std::map<keyT, valueT>

keyT と valueT のデータ型は実行時に明確になり、さまざまなデータ型に従っていくつかのマップ インスタンスを作成したいと考えています。これどうやってするの?

4

3 に答える 3

3

C++ テンプレートは、クラスや関数の単なる設計図です。

プログラムにテンプレート定義があっても、コンパイラがそれらのコードを生成するわけではありません。

コンパイラは、テンプレートがインスタンス化されている場合、つまり、パラメータを実際のデータ/クラス タイプに置き換えてテンプレートを使用する場合にのみコードを生成します。

これらの情報がないと、コンパイラはコードを生成できません。実際に家を建てるには、設計図だけでなく、レンガとモルタルが必要です。

于 2013-01-06T15:50:09.703 に答える
0

boost::any次のようなこのタスクに役立つかもしれません

typedef std::map<int, boost::any> MyIntMap;
于 2013-01-06T19:10:45.283 に答える
0

実際には、decltype を使用して他の変数型に基づいたテンプレート引数を使用してマップを宣言できます (c++11 の場合)。このページhttp://www.cprogramming.com/c++11/c++11-auto-decltype-を参照してください。 return-value-after-function.htmlただし、c ++ 98を参照している場合は正しいです。その場合、それは不可能です

于 2013-01-06T15:48:35.480 に答える