ホームページ >バックエンド開発 >C++ >std::map のキーとして使用するには、クラスが満たさなければならないキー要件は何ですか?

std::map のキーとして使用するには、クラスが満たさなければならないキー要件は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 04:38:11692ブラウズ

What Key Requirements Must a Class Satisfy to Be Used as a Key in std::map?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。