Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Апрель 25, 2013, 20:49



Название: qSort - сортировка сложных данных
Отправлено: qwyllum от Апрель 25, 2013, 20:49
Доброго времени суток! Встал передо мной вопрос сортировки списка. Прочитал докумментацию, нашел простейшую реализацию:

Код:
QList<int> list;
    list << 33 << 12 << 68 << 6 << 12;
    qSort(list.begin(), list.end());

Однако элементы моего списка не простые данные, а объекты класса. Допустим, у них есть поля типа Qstring, int и т.п. Как отсортировать список по этим значениям?

Заранее огромное спасибо


Название: Re: qSort - сортировка сложных данных
Отправлено: m_ax от Апрель 25, 2013, 21:00
Доброго времени суток! Встал передо мной вопрос сортировки списка. Прочитал докумментацию, нашел простейшую реализацию:

Код:
QList<int> list;
    list << 33 << 12 << 68 << 6 << 12;
    qSort(list.begin(), list.end());

Однако элементы моего списка не простые данные, а объекты класса. Допустим, у них есть поля типа Qstring, int и т.п. Как отсортировать список по этим значениям?

Заранее огромное спасибо

и, видимо, чтение документации прекратилось на этом примере..(


Название: Re: qSort - сортировка сложных данных
Отправлено: Vamireh от Апрель 27, 2013, 14:36
Как минимум перегрузи операторы сравнения


Название: Re: qSort - сортировка сложных данных
Отправлено: m_ax от Апрель 27, 2013, 14:53
Как минимум перегрузи операторы сравнения

А если критериев сортировки несколько? Например, хочу иметь выбор по каким полям структуры сортировать в зависимости от ситуации..


Название: Re: qSort - сортировка сложных данных
Отправлено: Авварон от Апрель 27, 2013, 15:57
Код:
class LessThan
{
public:
    bool operator(const T &a, const T &b) { return a.field < b.field; }
};
...

qSort(list.begin(), list.end(), LessThan);
Да простят меня фанаты с++11.