我找不到为QMap
设置自定义比较器功能的方法,就像我可以为std::map
(其模板参数的typename _Compare = std::less<_Key>
部分)一样。QMap是否支持自定义比较函数?
QMap
有没有办法设置?
我找不到为QMap
设置自定义比较器功能的方法,就像我可以为std::map
(其模板参数的typename _Compare = std::less<_Key>
部分)一样。QMap是否支持自定义比较函数?
QMap
有没有办法设置?
没有记录(and it's a mistake, I think),但是您可以专门为您的类型设计qMapLessThanKey
模板函数(参见the source)。这将使你的类型使用一些其他的功能,而不是operator<
:
template<> bool qMapLessThanKey<int>(const int &key1, const int &key2)
{
return key1 > key2; // sort by operator> !
}
尽管如此,性病::地图都有,你可以指定每个每张地图不同的比较的优势,而在这里你不能(所有使用你的类型的地图必须看到专业化,否则一切都会崩溃)。
不,据我所知QMap没有这个功能,它要求它是运算符<的关键类型,所以如果你确实需要这个比较功能,你就会被std :: map卡住。
QMap
的密钥类型必须提供operator<()
。 QMap
使用它来保持其项目排序,并假定如果x < y和y都不为0,则两个键x和y相等。
万一,超载operator<()
。