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

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

Patricia Arquette
リリース: 2024-11-26 08:05:11
オリジナル
249 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート