Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 03.10.2021
Сообщений: 138

Использовать бинарное дерево для хранения объектов каждого производного класса

01.06.2023, 20:57. Показов 1729. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработайте иерархию родственных типов, корневой класс которой абстрактный базовый класс (класс-интерфейс), для моделирования и обработки данных предметной области набором отложенных методов - полиморфная обработка родственных объектов. (это сделал)
Создайте обобщенный (void*) контейнерный класс (базовый) и от него, используя закрытое наследование, производный класс – шаблон для хранения указателей на абстрактный базовый класс-интерфейс.
Для хранения объектов каждого производного класса используйте бинарное дерево.

Я понял так, что мне нужно сделать класс-контейнер (а), для объектов другого класса (б), который является шаблонным и в нём хранятся объекты класса-интерфейса (в). От него уже идёт базовый класс и дальше по цепочке куча производных. И потом к каждому из производных классов сделать свою структуру, двоичное дерево.

Правильно ли я понял? Звучит это просто несколько странно, объект в контейнере, в шаблоне, в ещё одном контейнере.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2023, 20:57
Ответы с готовыми решениями:

Какой стандартный контейнер лучше использовать для хранения некоторого числа объектов класса?
Есть класс "задача" в нем некоторое количество строк путей к файлам и некоторое количество строк путей к папкам назначения(пока храню в...

метод производного класса для объектов-матриц
собсна, вот моя попытка написать код для файла Matrix.h: #include <iostream> #include <iomanip> #include...

Освобождение памяти для объектов производного класса
Всем привет. Не могу найти инфу в интернете, всё перерыл, но понял что случай специфичный у меня. Придумал себе конструкцию, но не уверен,...

1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.06.2023, 16:40
Цитата Сообщение от Слава57 Посмотреть сообщение
нужно сделать класс-контейнер
Да
Цитата Сообщение от Слава57 Посмотреть сообщение
для объектов другого класса
Нет. Не обязательно. Если это, скажем unique_ptr<Base> то да, а если простой указатель, то какой же это класс?
Цитата Сообщение от Слава57 Посмотреть сообщение
который является шаблонным и в нём хранятся объекты класса-интерфейса
Который является указателем на базовый класс вашей предметно-ориентированной, клиентской иерархии. То есть, дерево, это контейнер:
Цитата Сообщение от Слава57 Посмотреть сообщение
шаблон для хранения указателей на абстрактный базовый класс-интерфейс
Цитата Сообщение от Слава57 Посмотреть сообщение
От него уже идёт базовый класс и дальше по цепочке куча производных. И потом к каждому из производных классов сделать свою структуру, двоичное дерево.
Похоже, что нет. Написано мутновато, но мне кажется, что иерархия дерева связана лишь с трюком наследования от контейнера для указателя void*. Где-то у Страуструпа есть пример. Оно не связанно с предметной иерархией - клиентом.
Основные трудности, что я вижу, связаны с реализацией методов сравнения объявленных в базовом классе клиентской иерархии. Иначе указатель на базовый не сможет быть клиентом дерева. Нужен хотя бы оператор метод сравнивающий на <. Самое простое, определить оператор сравнения объектов базового класса, даже не делая его виртуальным. То есть, определить в базовом классе намертво. Для этого нужен какой-то минимум данных в базовом классе. Например, целочисленный идентификатор. Или ещё что-то. Тогда уже можно будет определить метод сравнения указателей базового класса. Только, смотрите не определите оператор сравнения для указателей на базовый класс. У указателей он и так есть. И он нужен бывает)
А через виртуальное наследование сложновато. Нужно чтобы каждый наследник умел сравниваться с каждым наследником. Логически это болото.
Это то что мне показалось. Может кто-то, скажет иначе или что-то добавит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2023, 16:40
Помогаю со студенческими работами здесь

Для каждого числа последовательности узнать, входит ли оно в бинарное дерево
Дана задача: даны две последовательности чисел. Построить бинарное дерево, содержащее числа первой последовательности. Для каждого...

Из сыновей, для каждого из которых известен отец, составить бинарное дерево
Очень нужна помощь со следующей задачей: Необходимо из сыновей, для каждого из которых известен отец, составить бинарное дерево. ...

Для каждого уровня вывести значения узлов слева направо (бинарное дерево)
Написал класс для дерева, дальше туплю сам класс: https://pastebin.com/82T8vPL9 мейн: https://pastebin.com/sRV3U5Y0 using...

Бинарное дерево. Какие команды надо использовать в main.cpp, чтобы использовать пользовательские процедуры
Пытаюсь реализовать функционал модуля бинарного дерева. Беру алгоритмы с http://www.cprogramming.com/tutorial/lesson18.html Не могу...

Реализовать класс-контейнер для хранения набора объектов класса
Реализовать класс-контейнер для хранения набора объектов класса из предыдущей лабораторной работы. Объекты должны храниться в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru