2 / 2 / 1
Регистрация: 12.10.2013
Сообщений: 246
|
||||||
1 | ||||||
Как отсортировать вектор классов?28.12.2016, 10:55. Показов 2634. Ответов 16
Метки нет (Все метки)
Мне нужно пузырьковой сортировкой отсортировать вектор разнородных классов по 2 общим полям. Алгоритм сортировки я знаю, вот только не знаю как его применить к классам. Можно ли делать вот так?
0
|
28.12.2016, 10:55 | |
Ответы с готовыми решениями:
16
Отсортировать вектор классов Как заполнить вектор на вектор классов Как отсортировать вектор? Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы |
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
28.12.2016, 11:01 | 2 | |||||
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
28.12.2016, 11:32 | 3 | |||||
Сообщение было отмечено gru74ik как решение
Решение
нельзя.
определите в классе оператор сравнения, и оператор присваивания потом можно будет сделать:
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
28.12.2016, 12:39 | 4 |
Ну, во-первых, эти классы должны иметь общий базовый, а во-вторых, значения разных типов не получится сложить в один массив или вектор, так как у них размеры разные.
Складывайте в вектор указателей на базовый класс.
1
|
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
28.12.2016, 12:45 | 5 |
Определите базовый класс с этими двумя общими полями.
Перегрузите для него оператор сравнения "меньше". От него отнаследуйте два производных класса. Создайте вектор указателей на базовый класс. Отсортируйте его любым способом. Можно использовать готовый вариант с std::sort, можно использовать пузырьковую сортировку, но её реализация ничем не будет отличаться от сортировки обычного массива типа int.
1
|
2 / 2 / 1
Регистрация: 12.10.2013
Сообщений: 246
|
||||||
29.12.2016, 09:58 [ТС] | 6 | |||||
mas.push_back добавляет значения, как просмотреть эти значения?
0
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
29.12.2016, 10:01 | 7 |
0
|
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
|
|
29.12.2016, 10:06 | 8 |
а что tuple? tuple никакого отношения к массивам и векторам не имеет... tuple можно считать обычной структурой.
1
|
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
29.12.2016, 12:26 | 9 | |||||
Пример складывания указателей на базовый класс в вектор. Я умышленно сделал базовый класс абстрактным чтобы показать, что создаются только экземпляры производных классов.
Использовал smart pointer т.к. RAII и не охота следить за памятью. Кривые-косые названия поправил, но только те, что сильно в глаза бросались. У вас почему-то не инициализируются поля базового класса. И везде только конструкторы по умолчанию, но думаю, с этим вы сами справитесь. Я лишь хотел показать как правильно складывать объекты производных классов в один контейнер.
1
|
2 / 2 / 1
Регистрация: 12.10.2013
Сообщений: 246
|
|
30.12.2016, 09:47 [ТС] | 10 |
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
12.06.2017, 00:34 | 13 |
rikimaru2013, тут хватит и std::make_pair, std::tie для 3-х и более объектов
1
|
Неэпический
|
|
12.06.2017, 07:40 | 14 |
zarko97,
std::tie даст кортеж ссылок, а std::make_pair - пару с копиями объектов, если дополнительно не шаманить.То есть, используя std::tie мы устраняем копирование объектов.
2
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
12.06.2017, 13:16 | 15 |
Croessmah, тогда собственно придется std::ref/std::cref навешать
0
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
|
12.06.2017, 15:03 | 17 |
Croessmah, я про пэйр
0
|
12.06.2017, 15:03 | |
12.06.2017, 15:03 | |
Помогаю со студенческими работами здесь
17
Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы Как в один вектор поместить много классов? Как отсортировать вектор состоящий из элементов struct? Вектор классов. Число конструкторов элементов меньше числа деструкторов. Как так ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |