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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы