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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сортировка QList< struct >  (Прочитано 3036 раз)
White Owl
Гость
« : Февраль 06, 2015, 02:14 »

Имеется QMap содержащий классы. Понадобилось просканировать этот словарь отсортированным по полю внутри класса.

Код:
class Record{
private:
   QString field;
   ....
public:
   static bool compareByField(const Record &s1, const Record &s2) {
        return s1.field.toLower() < s2.field.toLower();
   }
};
QMap<int, Record> mydictionary;

QList<Record> tmp = mydictionary.values();
qSort(tmp.begin(), tmp.end(), Record::compareByField);
foreach(Record r, tmp) {
   // actual work
}
Вроде все работает, но как-то уж очень это кучеряво.
Может можно обойтись без создания дополнительного списка tmp?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Февраль 06, 2015, 10:08 »

Может можно обойтись без создания дополнительного списка tmp?
Нет, но можно сделать это аккуратнее сортируя указатели, т.е. избегая копирования данных
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Февраль 06, 2015, 11:20 »

Или держать "параллельно"
Код
C++ (Qt)
QMap< QString, Record* > my_sorted_dictionary;
Записан

Qt 5.11/4.8.7 (X11/Win)
White Owl
Гость
« Ответ #3 : Февраль 06, 2015, 20:40 »

Или держать "параллельно"
Код
C++ (Qt)
QMap< QString, Record* > my_sorted_dictionary;
Угу.... Сделал почти так. Только в качестве значений не ссылки на данные а int - ключи основного хранилища.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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