QMap是否支持自定义比较器功能?

sas*_*alm 10 c++ qt qmap

我无法找到一种方法来设置自定义比较器函数QMap,就像我可以std::map(typename _Compare = std::less<_Key>它的模板参数的一部分).

QMap没有办法设置一个?

pep*_*ppe 14

它没有记录(我认为这是一个错误),但你可以专门qMapLessThanKey为你的类型模板功能(参见来源).这将允许您的类型使用其他功能,而不是operator<:

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

尽管如此,std :: map的优点是你可以为每个地图指定一个不同的比较器,而在这里你不能(所有使用你的类型的地图都必须看到那个专业化,否则一切都会崩溃).