Если вхождения уникальны, то вы должны использовать std::set<T>
, а не std::vector<T>
.
Это имеет дополнительное преимущество erase
функции-члена, которая делает то, что вы хотите.
Посмотрите, как использование правильного контейнера для работы дает вам более выразительные инструменты?
#include <set>
#include <iostream>
int main()
{
std::set<int> notAList{1,2,3,4,5};
for (auto el : notAList)
std::cout << el << ' ';
std::cout << '\n';
notAList.erase(4);
for (auto el : notAList)
std::cout << el << ' ';
std::cout << '\n';
}
// 1 2 3 4 5
// 1 2 3 5