QMap是否支持自定义比较器功能
Does QMap support custom comparator functions?
我找不到为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<()
过载。
相关文章:
- std::设置自定义比较器
- C++中"std::sort"比较器的不同类型
- 将 std::set 与基于键的比较器一起使用
- 带自定义比较器的最小优先级队列
- 函数类作为比较器
- 优先级队列自定义比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- set_intersection使用自定义设置比较器
- Qsort和不兼容的比较器功能 - C++
- std::set 比较器功能如何工作?
- C - 如何正确地将比较器传递到STL功能
- 将带有自定义比较器的映射传递到功能
- 比较器功能在C++意义和工作
- 功能比较器可以是静态功能
- 成员功能作为映射比较器
- C++ 集<>类对象。使用自己的比较器给出来自功能,xtree等的错误 JUNK
- QMap是否支持自定义比较器功能
- 无法使用自定义比较器功能对列表进行排序
- C++中各种自定义比较器功能之间的差异