10

(テンプレート引数の一部)のQMapように、カスタムコンパレータ関数を設定する方法が見つかりませんでした。std::maptypename _Compare = std::less<_Key>

QMap設定する方法はありますか?

4

3 に答える 3

15

文書化されていません (間違いだと思いますqMapLessThanKey) が、テンプレート関数を型に特化することができます (ソースを参照)。これにより、タイプは次の代わりに他の関数を使用できるようになりますoperator<

template<> bool qMapLessThanKey<int>(const int &key1, const int &key2) 
{ 
    return key1 > key2;  // sort by operator> !
}

それにもかかわらず、 std::map には mapごとに異なるコンパレータを指定できるという利点がありますが、ここでは指定できません (タイプを使用するすべてのマップがその特殊化を確認する必要があります。そうしないと、すべてがバラバラになります)。

于 2013-07-04T07:33:15.270 に答える