Russian Qt Forum
Сентябрь 27, 2024, 16:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qSort - сортировка сложных данных  (Прочитано 3076 раз)
qwyllum
Гость
« : Апрель 25, 2013, 20:49 »

Доброго времени суток! Встал передо мной вопрос сортировки списка. Прочитал докумментацию, нашел простейшую реализацию:

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

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

Заранее огромное спасибо
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Апрель 25, 2013, 21:00 »

Доброго времени суток! Встал передо мной вопрос сортировки списка. Прочитал докумментацию, нашел простейшую реализацию:

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

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

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

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

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Vamireh
Гость
« Ответ #2 : Апрель 27, 2013, 14:36 »

Как минимум перегрузи операторы сравнения
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #3 : Апрель 27, 2013, 14:53 »

Как минимум перегрузи операторы сравнения

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

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Апрель 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.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.