Russian Qt Forum

Программирование => Алгоритмы => Тема начата: DenisKh001 от Июль 11, 2011, 07:59



Название: Как реализовать двухколонную сортировка QList<MyTable>
Отправлено: DenisKh001 от Июль 11, 2011, 07:59
Есть класс-контейнер MyTable состоящий из двух столбцов first, second. Как сделать сортировку по двум столбцам?
class MyTable
{  MyTable();
    QString first;
    QString second; };
QList<MyTable> list // определение
... // добавляем данные
Sort(list.begin(),list.end()); // такое конечно не работает

Наверное это общий вопрос программирования, где можно почитать о таких алгоритмах?


Название: Re: Как реализовать двухколонную сортировка QList<MyTable>
Отправлено: LisandreL от Июль 11, 2011, 08:18
Вариант 1:
Цитировать
void qSort ( RandomAccessIterator begin, RandomAccessIterator end )
This function requires the item type (in the example above, int) to implement operator<().
То есть вы можете для своего класса определить этот оператор.

Вариант 2:
Цитировать
void qSort ( RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan )
Uses the lessThan function instead of operator<() to compare the items.
В этом варианте вы можете реализовать несколько функций сравнения. Удобно, если нужно несколько вариантов сортировки. Например, вначале по первому столбцу, затем по второму, вначале по второму, потом по первому, только по первому, только по второму…


Название: Re: Как реализовать двухколонную сортировка QList<MyTable>
Отправлено: lenny от Октябрь 08, 2011, 12:30
Наверное это общий вопрос программирования, где можно почитать о таких алгоритмах?
В книгах по STL. Самая простая Л.Аммерааль - STL для программистов на C++.