Как насчет std::remove()
вместо этого:
#include <algorithm>
...
vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());
Эта комбинация также известна как идиома erase-remove.
Вы не можете сделать это напрямую. Вам нужно использовать алгоритм std :: remove
, чтобы переместить удаляемый элемент в конец вектора, а затем использовать функцию erase
. Что-то вроде: myVector.erase (std :: remove (myVector.begin (), myVector.end (), 8), myVec.end ());
. См. стирание элементов из вектора для получения более подробной информации.
Вы можете использовать std::find
для получения итератора к значению:
#include <algorithm>
std::vector<int>::iterator position = std::find(myVector.begin(), myVector.end(), 8);
if (position != myVector.end()) // == myVector.end() means the element was not found
myVector.erase(position);