Название: [РЕШЕНО] Сортировка QLinkedList Отправлено: Yegor от Октябрь 21, 2016, 19:26 Всем здравствуйте!
У меня есть QLinkedList, который я хочу отсортировать. Пробую с помощью qSort. Пишу, например: Код
При компиляции такого выдается много ошибок. Если класс QLinkedList заменить на QList, то компиляция успешная. Каким же образом сортировать QLinkedList? Подскажите, пожалуйста. Спасибо! Название: Re: Сортировка QLinkedList Отправлено: Авварон от Октябрь 21, 2016, 20:01 QList - это на самом деле массив. Сортировать можно только контейнеры прямого доступа (QList, QVector).
Ответ - скопировать QLinkedList в масссив (напр, QVector), отсортировать его, скопировать обратно. Название: Re: Сортировка QLinkedList Отправлено: Igors от Октябрь 22, 2016, 04:15 Каким же образом сортировать QLinkedList? Может стоит использовать std::list который имеет метод sort, причем хитрый - адрес элемента не меняется, т.е. такая сортировка намного эффективнее. К сожалению, для QLinkedList такого же метода не видно. Ну зато есть удобный соскок в std и обратно (from/toStdList)Название: Re: Сортировка QLinkedList Отправлено: Yegor от Октябрь 22, 2016, 10:03 Как по мне, удобное решение сделать временный QList и отсортировать его. А потом перезаполнить QLinkedList из этого QList. Хотя и решение с std::list более целесообразное.
Спасибо большое всем за помощь! Название: Re: Сортировка QLinkedList Отправлено: Igors от Октябрь 22, 2016, 15:48 Как по мне, удобное решение сделать временный QList и отсортировать его. А потом перезаполнить QLinkedList из этого QList. Возможно еще решение - не трогать QLinkedList, пусть адреса эл-тов там не меняются. А нужна сортировка - сделать контейнер указателей и его сортировать. Это заметно быстрее для приличных эл-тов и в духе "списка", обычно его и заводят чтобы эл-ты не дергать. Правда за это придется заплатить еще контейнером. |