Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
qppq
11 / 11 / 1
Регистрация: 31.08.2016
Сообщений: 153
Завершенные тесты: 1
#1

Как поместить в STL-контейнер экземпляры разных классов? - C++

31.08.2016, 10:42. Просмотров 836. Ответов 30

Как поместить в контейнер экземпляры разных классов(типов) ?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Ivana
2881 / 1706 / 147
Регистрация: 01.03.2013
Сообщений: 4,872
Записей в блоге: 2
01.09.2016, 11:32     Как поместить в STL-контейнер экземпляры разных классов? #21
Avazart, возможно. Тогда один из вариантов - свой костыльный any (пока они там в стандарте экспериментировать и утверждать будут), приправленный любым количеством дополнительных полей и методов (для реализации паритетных связей, например )
Avazart
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 17
01.09.2016, 11:36     Как поместить в STL-контейнер экземпляры разных классов? #22
Все зависит от контекста, имея разный контекст- можно по разному оптимизировать.
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
01.09.2016, 11:47     Как поместить в STL-контейнер экземпляры разных классов? #23
Цитата Сообщение от qppq Посмотреть сообщение
то есть нада помнить что-где лежит?
Нет. иерархию и действия с ними проектировать так чтобы не надо было помнить.

Добавлено через 7 минут
Цитата Сообщение от qppq Посмотреть сообщение
то есть нада помнить что-где лежит?
Нет. иерархию и действия с ними проектировать так чтобы не надо было помнить. К примеру пуля ракета бомба - все это можно назвать одним словом "снаряд". "снаряд" умеет лететь после запуска. Но каждый по своему. Делаешь абстрактный класс снаряд с абстрактным виртуальным методом "лететь" и специализации "пуля" "ракета" и "бомба". Каждая из специализаций хранит свой набор данных нужный для счета следующего шага траектории и имеет свой метод "лететь". Засовываешь все это в один массив "снаряд". И не разбирая кто есть кто вызываешь им всем по порядку метод "лететь" а летит в результате каждый по своему.
Т.е. реально имеет смысл пихать объекты разных типов в один массив только если можно работать с ними не разбирая кто есть кто.
GbaLog-
Любитель чаепитий
2585 / 1124 / 279
Регистрация: 24.08.2014
Сообщений: 4,121
Записей в блоге: 1
Завершенные тесты: 2
01.09.2016, 11:51     Как поместить в STL-контейнер экземпляры разных классов? #24
Цитата Сообщение от _Ivana Посмотреть сообщение
Тогда один из вариантов - свой костыльный any (пока они там в стандарте экспериментировать и утверждать будут)
Есть же Boost'овский.

Добавлено через 40 секунд
Цитата Сообщение от _Ivana Посмотреть сообщение
приправленный любым количеством дополнительных полей и методов
А, ну тогда лучше свой, конечно.
Можно даже поверх бустовского.
Avazart
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 17
01.09.2016, 12:00     Как поместить в STL-контейнер экземпляры разных классов? #25
А бустовский что сильно отличается от STL -ного?
GbaLog-
Любитель чаепитий
2585 / 1124 / 279
Регистрация: 24.08.2014
Сообщений: 4,121
Записей в блоге: 1
Завершенные тесты: 2
01.09.2016, 12:01     Как поместить в STL-контейнер экземпляры разных классов? #26
Avazart, Нет, но он хотя бы не в experimental стадии.
Avazart
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 17
01.09.2016, 12:03     Как поместить в STL-контейнер экземпляры разных классов? #27
Цитата Сообщение от GbaLog- Посмотреть сообщение
Avazart, Ну хотя бы тем, что он не в experimental стадии.
Ну так а кто же обкатывать будет если все отказываться будут в пользу буста ?
GbaLog-
Любитель чаепитий
2585 / 1124 / 279
Регистрация: 24.08.2014
Сообщений: 4,121
Записей в блоге: 1
Завершенные тесты: 2
01.09.2016, 12:17     Как поместить в STL-контейнер экземпляры разных классов? #28
Avazart, Не знаю, может быть тестеры какие-нибудь есть.
qppq
11 / 11 / 1
Регистрация: 31.08.2016
Сообщений: 153
Завершенные тесты: 1
01.09.2016, 13:37  [ТС]     Как поместить в STL-контейнер экземпляры разных классов? #29
Цитата Сообщение от Avazart Посмотреть сообщение
Вместо typename- typeid т.е. целое, а не строка.
typeid это глобальный тип или что это, и если меньше чар, то сколько весит?
Avazart
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 17
01.09.2016, 13:54     Как поместить в STL-контейнер экземпляры разных классов? #30
Цитата Сообщение от qppq Посмотреть сообщение
typeid это глобальный тип или что это, и если меньше чар, то сколько весит?
Зависит от реализации. Т.е как реализуешь так и будет.
В данном случае я имел не глобальный тип и имя поля структуры int typeid.

А вообще есть такое:
http://ru.cppreference.com/w/cpp/language/typeid
http://ru.cppreference.com/w/cpp/types/type_info
http://ru.cppreference.com/w/cpp/types/type_index
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2016, 13:36     Как поместить в STL-контейнер экземпляры разных классов?
Еще ссылки по теме:
C++ STL контейнер ошибка компиляции
Контейнер map и алгоритмы STL: несовместимость? C++
C++ STL контейнер set, вставка элементов
Работа с библиотекой STL, контейнер map C++
C++ Как в один вектор поместить много классов?

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

Или воспользуйтесь поиском по форуму:
qppq
11 / 11 / 1
Регистрация: 31.08.2016
Сообщений: 153
Завершенные тесты: 1
02.09.2016, 13:36  [ТС]     Как поместить в STL-контейнер экземпляры разных классов? #31
Цитата Сообщение от Avazart Посмотреть сообщение
В данном случае я имел не глобальный тип и имя поля структуры int typeid.

может так: typedef int typeid;

фигню я конечно сморозил
Yandex
Объявления
02.09.2016, 13:36     Как поместить в STL-контейнер экземпляры разных классов?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru