|
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 18
|
||||||
Как сделать сортировку внутри класса?27.11.2017, 19:01. Показов 1681. Ответов 7
Метки нет (Все метки)
Помогите понять как произвести сортировку внутри класса. Есть класс Person из трех векторов. После каждого добавления данных нужно отсортировать по полю god. Весь код не привожу, если нужно добавлю. Нужно реализовать функцию MySort. Сейчас сортируется только один из векторов, нужно отсортировать все три, но по первому.
0
|
||||||
| 27.11.2017, 19:01 | |
|
Ответы с готовыми решениями:
7
Как сделать локализацию внутри класса/структуры? Сделать сортировку или выбор из класса?
|
|
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
|
|
| 27.11.2017, 19:10 | |
|
sdntver, у тебя person нифига не person, а контейнер какой-то. Храни в единичном экземпляре все характеристики + переопредели оператор < (для сравнения по god). А в другом месте объяви vector<Person> и его можно будет отсортировать.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 18
|
||||||
| 27.11.2017, 19:20 [ТС] | ||||||
|
Ну, полностью вот класс и задача сделать именно класс без main. То есть сдавать нужно только сам класс. Сейчас main прицеплен лишь для проверки работы класса.
0
|
||||||
|
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,813
|
|
| 27.11.2017, 19:27 | |
|
С main, без main, вы не верно понимаете саму идею класса. Класс Person не подходит для хранения массива персон. Для этих целей может подходить класс, например, "Журнал", "Телефонная книга", "Адресная книга" и т.д. Что-то, что содержит в себе сразу много персон.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 18
|
||||||
| 27.11.2017, 19:38 [ТС] | ||||||
|
Я с вами полностью согласен
Но задача от этого не меняет условия, а условие следующее:Реализуйте класс для человека, поддерживающий историю изменений человеком своих фамилии и имени. Считайте, что в каждый год может произойти не более одного изменения фамилии и не более одного изменения имени. При этом с течением времени могут открываться всё новые факты из прошлого человека, поэтому года́ в последовательных вызовах методов ChangeLastName и ChangeFirstName не обязаны возрастать. Гарантируется, что все имена и фамилии непусты. Строка, возвращаемая методом GetFullName, должна содержать разделённые одним пробелом имя и фамилию человека по состоянию на конец данного года. Если к данному году не случилось ни одного изменения фамилии и имени, верните строку "Incognito". Если к данному году случилось изменение фамилии, но не было ни одного изменения имени, верните "last_name with unknown first name". Если к данному году случилось изменение имени, но не было ни одного изменения фамилии, верните "first_name with unknown last name". В принципе у меня все условия работают, нужна лишь правильная сортировка по году Добавлено через 6 минут Вот второе решение той же задачи, сначала думал что дело в логике.
0
|
||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 27.11.2017, 19:43 | ||
|
В вашем случае обязательно хранить год, имя и фамилию в отдельных массивах? Можно создать еще один класс: например, DataСhange c полем год, и т.д. и в классе Person хранить вектор этих Datachange. Если оставлять все как было - то легче все время поддерживать отсортированное состояние. Отсортировать тоже можно, но есть нектороые трудности.
0
|
||
|
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 18
|
||||||
| 28.11.2017, 10:26 [ТС] | ||||||
|
А можно на примере показать как сделать вектор из класса и потом его еще и отсортировать?
Добавлено через 1 час 9 минут В общем решение нашел сам, сделал свою функцию сортировки методом пузырька. Но хотелось бы конечно увидеть более профессиональное решение, с использованием лямбда-функции sort(v.begin(), v.end(), [](int& a, int& b){return a < b;})
0
|
||||||
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
||||||||||||
| 28.11.2017, 10:43 | ||||||||||||
|
а так отсортировать его можно:
0
|
||||||||||||
| 28.11.2017, 10:43 | |
|
Помогаю со студенческими работами здесь
8
Как правильно сделать сортировку? Как сделать сортировку по ФИО Как создать vector внутри класса?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|