Название: [РЕШЕНО] Сортировка коллекции объектов Отправлено: Yegor от Октябрь 17, 2016, 14:59 Всем здравствуйте!
У меня есть коллекция объектов. Храню ее так: QList<MyClass*> То есть список из указателей на объекты. И мне нужно отсортировать этот список объектов, по времени. Заголовок класса: Код
В Qt Assistant нашел способ сортировки списка QList: QList<T> list; Код
Но вот только в таком коде за T берется значение, к которому применяется 'operator <' к указателю на объект, а не к самому объекту. А у меня же список с указателями на объекты. И тогда qSort будет сортировать содержимое QList согласно значения указателей (номер адреса памяти), и не будет переходить на объекты по указателям и применять к самим объектам 'operator <'. Вопрос, как научить алгоритм сортировки переходить по указателям на объекты, чтобы отсортировать их по их дате-времени? Спасибо! Название: Re: Сортировка коллекции объектов Отправлено: Johnik от Октябрь 17, 2016, 15:15 использовать, например, stable_sort (http://en.cppreference.com/w/cpp/algorithm/stable_sort), в этой функции можно указать свой способ сравнения.
Название: Re: Сортировка коллекции объектов Отправлено: GreatSnake от Октябрь 17, 2016, 15:28 В Qt Assistant нашел способ сортировки списка QList: QList<T> list; Код
Там есть ещё один Код
Название: Re: Сортировка коллекции объектов Отправлено: Igors от Октябрь 18, 2016, 06:27 Можно и std::sort, только тоже с функтором. И еще
bool operator<(const MyClass & other) const Название: Re: Сортировка коллекции объектов Отправлено: Yegor от Октябрь 18, 2016, 12:35 Цитировать Там есть ещё один Код C++ (Qt) Код
То есть можно сделать функцию для сравнения (LessThan lessThan), и подставить ее в функцию qSort в качестве третьего аргумента. Спасибо большое, GreatSnake! Название: Re: Сортировка коллекции объектов Отправлено: GreatSnake от Октябрь 18, 2016, 12:52 То есть можно сделать функцию для сравнения (LessThan lessThan), и подставить ее в функцию qSort в качестве третьего аргумента. Да, а ещё лучше лямбду, если используешь C++11. |