とベクトルを初期化します。 など。モデル401は、6661,6662,6669,6674; モデル402:6669,6661; などは、私は次のような構造を持っている異なる値
これを取得するにはどの方法が最適ですか?私は例えばshared_ptr<SModelData>
用(スマート所有するポインタのいずれかを使用して希望
const multimap<int, SModelData*> models_data =
:
とベクトルを初期化します。 など。モデル401は、6661,6662,6669,6674; モデル402:6669,6661; などは、私は次のような構造を持っている異なる値
これを取得するにはどの方法が最適ですか?私は例えばshared_ptr<SModelData>
用(スマート所有するポインタのいずれかを使用して希望
const multimap<int, SModelData*> models_data =
:
一般的に悪い考えをSTLコンテナに格納生所有のポインタをされたが、バグのソース共有所有権セマンティック、または一意の所有権セマンティクの場合はunique_ptr<SModelData>
)、または単にSModelData
値を使用してください。
さらに、multimap
を使用しますか?
おそらくmap
の値はちょうど良いでしょうか?
例:
const map<int, SModelData> models_data
あなたconst map
を初期化するには、あなただけ例えば、C++ 11の初期化子リスト、またはラムダを使用することがあります。
const auto models_data = []() -> map<int, SModelData> {
map<int, SModelData> data;
// ... Fill your map
return data;
}();
ありがとうございました!うん、私はすでにマップにSModelDataの代わりにマルチマップとSModelDataの代わりに移動しました。 –
私はあなたをお勧めしませんまず第一にあなたの地図内の構造体へのポインタを持っています。第二に、本当に 'std :: multimap'が必要ですか?単一のキーに複数の値を設定できますか?第3に、マップを初期化する方法と非常によく似たベクトルを初期化し、中括弧で囲まれたリストを使って['std :: initializer_list'](http://en.cppreference.com/w/cpp/utility/initializer_list)を作成します。 。ポインタが必要ない場合、途中でコンストラクタは必要ありません。 –
@Someprogrammerdude、タイプを基本マップに変更しました。ありがとうございます。それはinitializer_list(おそらく)でうまくいきます、ありがとうございます。 –