Я использую функцию сравнения для сортировки 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.
Но мне нужен список, отсортированный по нескольким атрибутам. как «сортировка по фамилии, затем по возрасту, затем по полу»
Мне нужна функция сортировки для сортировки по нескольким sortKey (что не работает!)
Как мы можем сортировать с несколькими ключами сортировки?
Есть ли какая-либо структура данных, которая поддерживает это? (как карта всегда хранит вещи в соответствии с данным ключом)