Как стереть элемент вектора указателем?C++

Программы на C++. Форум разработчиков
Anonymous
Как стереть элемент вектора указателем?

Сообщение Anonymous »

У меня есть это:

Код: Выделить всё

vector myVec;
и добавляю туда свои объекты следующим образом:

Код: Выделить всё

Object *obj1 = new Object;
myVec.push_back(obj1);
Предположим, что у меня есть 100 объектов таким образом и указатели имеют вид *obj1, *obj2 ... *obj100.

А теперь Я хочу удалить, скажем, obj37 из вектора. Мне бы хотелось сделать это так же, как нажать:

Код: Выделить всё

myVec.remove_back(obj37);
Было бы здорово, если бы существовала такая функция, как «remove_back», но я думаю, что ее нет.
Надеюсь, вы поняли суть и, пожалуйста, помогите мне с этим это.

Кстати, просто посмотрите на этот вопрос, в принятом ответе есть алгоритм удаления, работающий по значению:

Код: Выделить всё

vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());
Я попробовал, что с указателем даже я не верил, что это сработает и удивит; нет:

Код: Выделить всё

myVec.erase(std::remove(myVec.begin(), myVec.end(), *obj37), vec.end());
Да, я знаю, что я просто ерунда, но в этом вы поняли суть. Где-то должно быть такое простое решение, и мне это просто нужно.

Подробнее здесь: https://stackoverflow.com/questions/265 ... by-pointer

Вернуться в «C++»