std::map の主要な要件
std::map を利用する際、キークラスが持つ必要がある特性に関してよくある質問が生じます。
前提条件は非常に簡単です。キー クラスはコピーと割り当て機能。マップ内の実際の順序は、3 番目のテンプレート引数またはコンストラクター引数 (指定されている場合) によって決まります。通常、この引数のデフォルトは std::less
キーの順序をカスタマイズするには、理想的には機能オブジェクトとして比較演算子を作成できます。仮想型 MyType のこのような演算子の例を次に示します。
struct CmpMyType { bool operator()(MyType const& lhs, MyType const& rhs) const { // Implementation of the comparison logic... } };
この比較演算子は厳密な順序を定義する必要があることに注意してください。具体的には、CmpMyType()(a, b) が true を返す場合、CmpMyType()(b, a) は false を返す必要があります。両方の式が false と評価された場合、要素は等しいとみなされ、同じ等価クラスに属します。これらの要件に従うことで、キー クラスの機能を拡張して、std::map で有効なキーとして効果的に機能させることができます。
以上がstd::map のキーとして使用するには、クラスが満たさなければならないキー要件は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。