Название: Отсортировать QVector Отправлено: Alex_C от Июнь 19, 2012, 16:48 Есть
Код
Далее я заполнил эту структуру и мне ее нужно отсортировать по s->s1; Нашел в документации такой вариант с использованием QMap: Код
Пытаюсь сделать аналогично: Код
Ругается на foreach ошибка: 'QVector<PrefixRecord>*' is not a class, struct, or union type Понимаю, что не правильно использую foreach, до этого особо с ним дела не имел. Подскажите, как правильно? Название: Re: Отсортировать QVector Отправлено: alexis031182 от Июнь 19, 2012, 16:57 С итератором надо, foreach не примет QMap
Название: Re: Отсортировать QVector Отправлено: mutineer от Июнь 19, 2012, 16:58 какой ад. используй qSort
Название: Re: Отсортировать QVector Отправлено: Igors от Июнь 19, 2012, 17:01 Ругается на foreach Ну да, указатель не структура, нужно разыменовать (*prefixRecords)ошибка: 'QVector<PrefixRecord>*' is not a class, struct, or union type Понимаю, что не правильно использую foreach, до этого особо с ним дела не имел. Подскажите, как правильно? По поводу foreach. Наверное когда-то норвежскому программисту понравилась эта конструкция, его вины в этом нет. Но стоит ли это бездумно копировать. чем оно лучше? По мне так ничем, шифрует текст и заставляет ломать голову без нужды. Код
Название: Re: Отсортировать QVector Отправлено: Alex_C от Июнь 19, 2012, 17:08 Читаю документацию, однако))) а там
An alternative to using qSort() is to put the items to sort in a QMap, using the sort key as the QMap key. This is often more convenient than defining a lessThan function. Я так понимаю, что нефиг извращаться и воспользоваться void qSort ( RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan )? Название: Re: Отсортировать QVector Отправлено: Igors от Июнь 19, 2012, 17:23 Читаю документацию, однако))) а там С QMap возможно на пару строк короче, но грамотнее конечно qSortAn alternative to using qSort() is to put the items to sort in a QMap, using the sort key as the QMap key. This is often more convenient than defining a lessThan function. Я так понимаю, что нефиг извращаться и воспользоваться void qSort ( RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan )? Название: Re: Отсортировать QVector Отправлено: Bepec от Июнь 19, 2012, 18:48 Кхм... Почему то всегда думал и думаю, что QMap автоматом сортирует по ключу данные при добавлении. А тут вот оно как. Неужели работает?
Название: Re: Отсортировать QVector Отправлено: Igors от Июнь 19, 2012, 18:53 Кхм... Почему то всегда думал и думаю, что QMap автоматом сортирует по ключу данные при добавлении. А тут вот оно как. Неужели работает? Ну да, сортирует при добавлении. Только для каждого добавленного надо выделить память, да вставить, да в конце еще вылить в результат. А сортировка - просто обмен, поэтому расход памяти 0 и с нормальным функтором - намного быстрееНазвание: Re: Отсортировать QVector Отправлено: Alex_C от Июнь 19, 2012, 22:14 Пытаюсь реализовать через qSort
Код
Вызов qSort вызывает ошибку. Не найден нужный шаблон для qSort. Вроде уже и доку перечитал много раз - в Дельфи аналогичное много раз делал, а тут не пойму, что не так? Название: Re: Отсортировать QVector Отправлено: Kurles от Июнь 19, 2012, 22:38 а у тебя prefLessThan статическая или глобальная функция?
Название: Re: Отсортировать QVector Отправлено: LisandreL от Июнь 19, 2012, 23:00 Вызов qSort вызывает ошибку. Не найден нужный шаблон для qSort. Вроде уже и доку перечитал много раз - в Дельфи аналогичное много раз делал, а тут не пойму, что не так? Только что проверил и никакой ошибки:Код Разница с вашим кодом только в том, что всё подряд идёт и вместо stuct я написал всё же struct. Название: Re: Отсортировать QVector Отправлено: Alex_C от Июнь 20, 2012, 10:34 Разница с вашим кодом только в том, что всё подряд идёт и вместо stuct я написал всё же struct. Спасибо большое! Уже дома и сам понял в чем ошибка - prefLessThan определил в классе, а надо как отдельная ф-ция! Название: Re: Отсортировать QVector Отправлено: Kurles от Июнь 20, 2012, 11:03 Разница с вашим кодом только в том, что всё подряд идёт и вместо stuct я написал всё же struct. Спасибо большое! Уже дома и сам понял в чем ошибка - prefLessThan определил в классе, а надо как отдельная ф-ция! |