【发布时间】:2011-12-12 04:27:30
【问题描述】:
我正在使用比较函数对 QList 进行排序 并且 MyClass 有 n 个不同的属性,例如地址、年龄、名字、姓氏等
SortKey 是这样的。
typedef QPair<QString, Qt::SortOrder> SortKeyPair;
//pair of attr name (i.e. gender and order of sorting asc|desc)
static bool compare( MyClass *o1, MyClass *o2)
{
//sortKey is global static var.
if (sortKey.second == Qt::AscendingOrder) {
if (o1->dataField(sortKey.first) < o2->dataField(sortKey.first)) return true;
else return false;
} else {
if (o1->dataField(sortKey.first) > o2->dataField(sortKey.first)) return true;
else return false;
}
return false;
}
按单个属性排序。与 qSort 一起工作正常。 但我需要使用多个 attr 排序的列表。比如'按姓氏排序,然后按年龄,然后按性别'
我需要一个排序函数来按多个 sortKey 排序(这不起作用!)
我们如何使用多个排序键进行排序? 是否有任何可用的数据结构支持这一点? (就像地图总是根据给定的键排序)
【问题讨论】:
-
您不能对哈希表进行排序,也不能对它的子范围进行排序。我不知道
QHash到底是如何实现的,但你的请求似乎不是一个有意义的操作,实际上h.values(val)应该返回一个const并且不能被分配的东西。