1 | |
Сортировка vector'а14.09.2010, 11:19. Показов 60908. Ответов 15
Метки нет (Все метки)
В си можно сортировать массивы используя функцию qsort (и не писать собственных велосипедов). В Си++ такое не проканает в случае сортировки массива классов, потому как копирования данный внутри qsort'а будут проходить мимо конструкторов и операторов присваивания класса. А если у нас не массив, а vector, то труба полная. Т.е. qsort отпадает сразу. Есть ли с тандартной библиотечной поддержке Си++ какое-то средство для сортировки vector'а?
0
|
14.09.2010, 11:19 | |
Ответы с готовыми решениями:
15
Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками» Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка 1)Бинарный поиск 2)Сортировка включением 3)Шейкерная сортировка 4)Сортировка разделением |
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
14.09.2010, 11:57 | 2 | |||||
Разумеется.
3
|
14.09.2010, 12:01 [ТС] | 3 |
ОК. Попробуем-с
http://www.cplusplus.com/reference/algorithm/sort/
2
|
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
|
|
14.09.2010, 16:18 | 4 |
Для полной сортировки всего вектора vector<...>::sort или в крайнем случае std::sort(итераторы произвольного доступа), в классе должен быть определен оператор сравнения (я в большинстве случаев просто перегружаю < и == и включаю namespace std::rel_ops) или предикат для сравнения
0
|
14.09.2010, 16:22 [ТС] | 5 |
Вот тут http://www.cplusplus.com/reference/stl/ я что-то не нашёл vector::sort
0
|
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
|
|
14.09.2010, 16:27 | 8 |
http://msdn.microsoft.com/en-u... S.80).aspx
Забыл, у вектора нету встроенной сортировки, у него ж итераторы произвольногодоступа
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
14.09.2010, 17:09 | 12 |
Для правильного сравнения элементов вектора, если они имеют нетривиальный класс, достаточно перегрузить bool Мой_класс.operator<(const Мой_класс& object).
0
|
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
|
|
14.09.2010, 17:47 | 14 |
Да, этот вариант использует std::less , который сравнивает обьекты оператором <
0
|
14.09.2010, 20:29 | 15 | |||||
Можно написать также свой функтор сравнения, если не хочется вносить изменений в класс.
3
|
15.09.2010, 11:31 [ТС] | 16 |
fasked, по ссылке в посте 3 есть и описание и пример. Посты, начиная с 4-го, по большому счёту можно с чистой совестью удалять
0
|
15.09.2010, 11:31 | |
15.09.2010, 11:31 | |
Помогаю со студенческими работами здесь
16
Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка) Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется Быстрая сортировка, ситуация, при которой сортировка работает не корректно Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |