Russian Qt Forum
Февраля 19, 2025, 01:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: qSort - сортировка сложных данных  (Прочитано 3167 раз)
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.037 секунд. Запросов: 23.