3

次のようなマップの比較クラスを定義できます。

struct classcomp {
    bool operator() (const string& lhs, const string& rhs) const
    {
        if(lhs < rhs)
            return true;
        else 
            return false;
    }
};

しかし、ここでは と がキーlhsrhs表しています。キーではなく値で比較したい場合はどうすればよいですか? どうすればいいですか?

4

2 に答える 2

4

それはあなたが望むものではありません。それは何std::mapが欲しいかについてです。順序付けはメモリ内の要素のレイアウト (通常はツリー構造) に基づいており、コンパレータを使用するのはこのプロセスです。これが当てはまらないことを願っても、そうはなりません!

std::mapコンテナの選択が要件に合わないように思えます。コンテナー選択のフローチャートを参照して、次に何をすべきかを決定します。

于 2013-01-14T18:29:49.680 に答える
2

std::map 型は、値による比較をサポートしていません。値で比較する場合は、キーが古いマップの値を表し、値が古いマップのキーを表す新しいマルチマップを作成することを検討する必要があります。

つまり、値に基づいてキーを動的に並べ替えようとしているようです。その場合、キーの減少をサポートするプライオリティ キューを確認することをお勧めします。

お役に立てれば!

于 2013-01-14T17:59:29.427 に答える