![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| PostEr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 30.6.2003 Где: Самара Репутация: 1 Всего: 1 |
Если у меня std::vector поинтеров на экземпляры, и если я удаляю (деструктором или там ещё как
-------------------- ------------------------------------------------------------------ [email protected] До востребования |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Нет, конечно. Как он узнает, что ты объект удалил.
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Все нужно делать в рамках вектора, иначе смысл пропадет (кому нужны пойнтеры на черт-знает-куда). Правда, можно юзать смарт-пойнтеры, тогда собственно указуемые объекты будут существовать всегда, а вот то, на что указывает смарт-пойнтер, можно удалять/создавать (правда, пользуясь чисто средствами смарт-пойнтера).
-------------------- ![]() |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Использование умных указателей с библиотекой крайне не рекомендуется, главная причина - большинство алгоритмов библиотеки постороено на копировании содержимого. А при таком копировании у smartpointer "крыша едет". Так что это очень плохой совет, череваты непредсказуемыми ошибками (даже если на твоей реализации библиотеки все заработает).
Не согласен. Что хранить в контейнере зависит от решаемой задачи. Если необходимо хранить массив указателей то почему бы нет? В соседнем топике PostErr пытался "менеджер ресурсов" сделать. Так для этой задачи такой способ наиболее подходящий: хранить указатели на динамически созданные в памяти объекты, а не создавать копию по каждому запросу. Повторюсь: все зависит от создаваемого алгоритма. |
|||
|
||||
| PostEr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 30.6.2003 Где: Самара Репутация: 1 Всего: 1 |
Одним словом, если у меня есть std::vector чего-то, то всё нужно хранить именно в нём. То есть, хранить там не указатели, а непосредственно l-values (так это называется?), и удалять, удаляя из std::vector. Так же и с любыми контейнерами, как я понимаю?
-------------------- ------------------------------------------------------------------ [email protected] До востребования |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
читай внимательно:
|
|||
|
||||
| PostEr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 30.6.2003 Где: Самара Репутация: 1 Всего: 1 |
Да всё понятНО! Я считаю, что для моей задачи необходимо вызывать только конструкторы внутри вектора или контейнера, то есть AddItem должен вызывать конструктор и чтобы иначе никак
-------------------- ------------------------------------------------------------------ [email protected] До востребования |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
PostEr, лучше спроси у DENNN напрямую - КАК МНЕ ЭТО СДЕЛАТЬ ??
И напиши, что ты хочешь получить Мне с моими "кривыми" советами лучше не вмешиваться... -------------------- ![]() |
|||
|
||||
| PostEr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 30.6.2003 Где: Самара Репутация: 1 Всего: 1 |
А мне с кривыми вопросами
-------------------- ------------------------------------------------------------------ [email protected] До востребования |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |