14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
||||||
1 | ||||||
Qsort() Как отсортировать массив объектов по полю объекта23.08.2015, 09:38. Показов 6895. Ответов 19
Метки нет (Все метки)
Здравствуйте!
Никак не могу сладить с функцией qsort(). У меня есть класс, и в нем нужно сделать сортировку по ОДНОМУ элементу (по ID) и вследствие этого рассортировать всех членов класса (то есть рассортировать по одному параметру, по ID)
P.S. Я не стал вставлять в код другие функции, как то например ввод нового члена, просто потому что там все работает нормально, чтобы не загромождать код
0
|
23.08.2015, 09:38 | |
Ответы с готовыми решениями:
19
Отсортировать массив объектов пользовательского типа по заданному полю Отсортировать структуру User по заданному полю при помощи qsort Как отсортировать массив по по полю ? Как отсортировать список объектов по одному из свойств этого объекта |
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
23.08.2015, 10:12 | 2 |
Blitzor DDD, для сортировки std::vector есть std::sort из algorithm:
http://www.cplusplus.com/reference/algorithm/sort/ зачем вам C-шный qsort?
0
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
23.08.2015, 10:18 [ТС] | 3 |
Просто, я что-то никак не могу понять, как сортировать объекты по одному из полей этих объектов и все туманно поэтому...
0
|
12 / 12 / 8
Регистрация: 12.08.2015
Сообщений: 55
|
|
23.08.2015, 11:16 | 4 |
Blitzor DDD, посмотри тут я уже решал через квик сорт и расчёску Сортировка расчёской и быстрая сортировка
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
23.08.2015, 11:26 | 5 | |||||
См. вторую перегрузку std::sort, которая принимает компаратор. Элементарный пример для структуры из двух полей:
2
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
23.08.2015, 11:33 [ТС] | 6 |
Да, видимо, как начинающий программист на С++ до этого я еще не дорос...
0
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
23.08.2015, 11:38 [ТС] | 8 |
Ладно) Я постараюсь с этим разобраться
0
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
||||||
24.08.2015, 08:44 [ТС] | 9 | |||||
Здравствуйте! У меня задача может быть и классическая, однако я так и не нашел четкого ее описания и решения.
Дан массив из объектов класса, нужно отсортировать по одному из полей этого класса, я накидал примерный код, но вот, что должно быть в функции qsort() - в ф-ии быстрой сортировки я не знаю... Может кто-нибудь помочь?
Результатом выполнения программы до сортировки будет следующее, например: Id First Name Second Name 9 Viktor Sergeev 1 Ivan Smolin 12 Igor Petrov А после выполнения функции сортировки qsort() должно быть вот так: Id First Name Second Name 1 Ivan Smolin 9 Viktor Sergeev 12 Igor Petrov Сортирует по ID (поле класса people) и меняет местами объекты массива. Как сделать сортировку по полю.....?
0
|
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,683
|
||||||
24.08.2015, 08:59 | 10 | |||||
Сообщение было отмечено Ilot как решение
Решение
qsort() - древняя функция из C для массивов. В C++ следует использовать std::sort().
1
|
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
|
||||||
24.08.2015, 09:25 | 11 | |||||
Сообщение было отмечено Blitzor DDD как решение
Решение
Не знаю может немного криво(если что может покритикуйте кто-то), но мне в голову только такой путь пришел.
1
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
24.08.2015, 09:26 [ТС] | 12 |
Эх....
Жаль, но почему-то не работает. Сборка проходит нормально, но вместо сортировки выдаёт ID First Name Second Name 0 0 0 0 Не могу понять, что не так... И Вы говорите, что лучше просто sort(), а что это за сортировка, может быть ее лучше использовать?
0
|
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
|
||||||
24.08.2015, 09:27 | 13 | |||||
Я сначала когда прогу запускал не понимал почему два раза выводит массив, а потом понял что это просто сливается как в один и сортированный и несортированный массив и потому добавил
1
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
24.08.2015, 09:29 [ТС] | 14 |
Новичок,
синтаксис у Вас не очень простой для чела, который меньше месяца прогает на С++)
0
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
24.08.2015, 09:37 [ТС] | 16 |
Да, именно это и напугало)
То есть, насколько я понимаю, функция друг просто позволяет обратится к закрытому члену классу, можно и без нее, если int ID объявить типа public? А скажи пожалуйста, в Вашей строке зачем нужно преобразование такое?
0
|
14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
|
|
24.08.2015, 09:44 [ТС] | 18 |
Спасибо Вам большое!
Внесли чуток света и ясности в мой тёмный, мутный омут)
0
|
Croessmah
|
24.08.2015, 10:02
#19
|
Не по теме:
0
|
18899 / 9857 / 2410
Регистрация: 30.01.2014
Сообщений: 17,300
|
|
24.08.2015, 10:04 | 20 |
1
|
24.08.2015, 10:04 | |
24.08.2015, 10:04 | |
Помогаю со студенческими работами здесь
20
Отсортировать список объектов по полю класса Отсортировать массив с помощью функции qsort Как отсортировать такой массив по полю ДАТА? Отсортировать вектор объектов класса по определенному полю Массив отсортировать в порядке возрастания (быстрой сортировкой, qsort) Отсортировать массив методами: бинарных вставок, пузырька, пирамидальной сортировки и qsort Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |