std::map
キーと対応するマップされた値があることを知っています。
今私が言及したデータ型では、キーはstd::set<long>
or 型になりますstd::pair<long, long>
。したがって、マップ内の値はキーのソートされた値に基づいて格納されることに注意してください。では、std::map<std::set<long>, double>
AND はstd:map< std::pair<long, long>, double>
有効ですか?
std::set
operator<
同じタイプの 2 つのセット間で辞書式比較を実行する があります。そうstd::set<T>
です、マップの有効なキーになることができます。
Anには辞書式比較std::pair<T1,T2>
も実装されているため、厳密な弱い順序付けを実装する比較が小さい場合にも有効です。そのため、要件はより厳しくなっています。とはどちらも比較をマップのキーにする必要がありますが、有効なペアを形成するためには必要ありません。したがって、有効なペアが必ずしもマップの有効なキーを形成するとは限りません。一方、独自の比較基準を使用してマップをインスタンス化できます。operator<
std::map<std::pair<T1, T2>, T3>
T1
T2
operator<
T1
T2
std::map<std::pair<T1, T2>, T3, Comp> m;
いいえ、構文が間違っています。が必要なstd::map<std::set<a_type_here>, double>
ので、set のテンプレート パラメータを追加します。
注意a_type_here
する必要がoperator<
あるか、使用する必要がありますstd::set<a_type_here, compare_function>
あなたが望むと思われるものは次のとおりです。 std::map<std::pair<long, long>, double> mapping
使い方の例; mapping[std::make_pair(1,2)] = 0.1;