Элемент вектора Стирания C++ значением, а не положением? [дубликат]

235
задан Guy Avraham 25 April 2018 в 05:40
поделиться

3 ответа

Как насчет std::remove() вместо этого:

#include <algorithm>
...
vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());

Эта комбинация также известна как идиома erase-remove.

390
ответ дан 23 November 2019 в 03:28
поделиться

Вы не можете сделать это напрямую. Вам нужно использовать алгоритм std :: remove , чтобы переместить удаляемый элемент в конец вектора, а затем использовать функцию erase . Что-то вроде: myVector.erase (std :: remove (myVector.begin (), myVector.end (), 8), myVec.end ()); . См. стирание элементов из вектора для получения более подробной информации.

11
ответ дан 23 November 2019 в 03:28
поделиться

Вы можете использовать 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);
92
ответ дан 23 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: