ホームページ  >  記事  >  バックエンド開発  >  任意のクラスが std::map のキーとして機能できますか?

任意のクラスが std::map のキーとして機能できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-26 08:05:11183ブラウズ

Can Any Class Serve as a Key for std::map?

std::map のキー: 要件と実装

異なるクラスのオブジェクトをマッピングするために std::map を利用する場合、キーとして使用する予定のキーは、有効なキーに必要な要件を満たしていない可能性があります。 std::map は順序付けメカニズムを使用してその内容を編成します。これにより、任意のクラスがキーとして機能できるかどうか、または特定の要件が存在するかどうかという問題が生じます。

std::map のキーは次の条件に従う必要があります。要件:

  • コピー可能性と割り当て可能性: キー クラスはコピーおよび割り当て可能である必要があります。

マップの順序は、3 番目のテンプレート引数またはコンストラクター引数によって制御されます。デフォルトは std::less です。デフォルトでは、std::less < を活用します。オペレーター。ただし、独自の比較演算子を柔軟に定義できます。

struct CmpMyType
{
    bool operator()( MyType const&amp; lhs, MyType const&amp; rhs ) const
    {
        // Implementation of comparison logic
    }
};

比較演算子が厳密な順序を定義していることを確認してください。 CmpMyType()( a, b ) が true を返す場合、 CmpMyType()( b, a ) は false を返す必要があります。両方が false を返す場合、要素は同等とみなされ、同じ同等クラスに属します。

以上が任意のクラスが std::map のキーとして機能できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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