Показать сообщение отдельно
Старый 29.06.2012, 15:07   #12
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: контейнеры

Сообщение от impersonalis Посмотреть сообщение
так же.
Контейнер подразумевает динамическое изменение своего содержимого. Как правило, это является следствием того, что сущность-владелец контейнера всего-лишь осуществляет менеджмент некоторых объектов:
1) сущность их не создаёт
2) сущность не удаляет их
3) объекты существуют вне сущности
Ну и почему тогда хранить НЕ указатели? Если же концепция другая, т.е. сущность явно агрегирует в себя сами объекты, то как правило (но не всегда) можно обойтись массивом (в т.ч. динамическим).
И ещё добавлю:
если и в контейнере хранятся не нативные сущности, то организация усложняется сразу. Если с указателями для помещения экземпляра в контейнер достаточно скопировать его адрес (несколько байт), то здесь:
1) нужно перекопировать весь объект;
2) исходный объект удалить (автоматически);
3) если в объекте есть данные, адресуемые указателем (например, динамические массивы), то, вероятно, придётся писать свою реализацию конструктора копирования.
4) конструктор и деструктор (в случае из п.3) тоже придётся реализовать, даже если объект - структура, хранащая пару строк (char*), а их задание и удаление раньше контролировалось вами (до использования контейнера) вручную.

В общем - кроме экономии капли памяти (на указатель) плюсов для использования в контейнерах не указателей, а самих сложных объектов - не вижу.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (29.06.2012)