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

Does QMap support custom comparator functions?

本文关键字:比较器 功能 自定义 支持 是否 QMap      更新时间:2023-10-16

我找不到为QMap设置自定义比较器函数的方法,就像为std::map(其模板参数的typename _Compare = std::less<_Key>部分)设置一样。

QMap有办法设置一个吗?

它没有文档记录(我认为这是一个错误),但在中,您可以为您的类型专门化qMapLessThanKey模板函数(参见源代码)。这将允许您的类型使用其他功能,而不是operator<:

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

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

不,据我所知,QMap不具有它所要求的键类型的运算符<,因此,如果您真的需要比较功能,那么就只能使用std::map了。

QMap的密钥类型必须提供operator<()QMap使用它来保持其项的排序,并且假设如果x<y或y<x是真的。

万一operator<()过载。