Как удалить элемент из вектора без вызова деструктора (с++)?

У меня есть указатель на объект.
Я знаю, что этот объект хранится в векторе А.
Мне нужно его убрать из вектора А.
Позже этот же объект будет добавлен в вектор В.

Но когда я удаляют объект из вектора А, то вызывается его деструктор и он удаляется.
А в вектор В записывается уже удаленный объект.
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg
Баянист. Тамада. Услуги.
Переделать архитектуру, вместо объектов хранить указатели на них.

Альтернативно, можно хранить unique_ptr на нужные объекты, а при удалении изымать из владения указатель методом release или пользуясь move-семантикой.

Третье, если это объект, написанный вами, реализуйте для него конструктор и оператор перемещения и используйте move в нужный вектор.
Ответ написан
hePPer
@hePPer
видимо мы удаляете сразу объект и ссылка на него теряется - изза чего происходит вызов деструктора. пробуйте сначала извлеч объект во временную переменную, а после удалять.
Ответ написан
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
Можно хранить умные указатели на объекты. А можно хранить и reference_wrapper. Но это уже от архитектуры зависит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
19 янв. 2019, в 19:28
1500 руб./за проект
19 янв. 2019, в 18:29
50 руб./за 1000 зн.
19 янв. 2019, в 17:47
35 руб./за 1000 зн.