The usual way to delete all elements that are equal to some value is using standard algorithm std::remove
along with member function erase
For example
void function()
{
vector<int> vec1;
vec1.push_back(3);
vec1.push_back(4);
vec1.push_back(5);
vec1.erase( std::remove( vec1.begin(), vec1.end(), 4 ), vec1.end() );
}
if you want to delete only one element that is equal to 4 you could write
void function()
{
vector<int> vec1;
vec1.push_back(3);
vec1.push_back(4);
vec1.push_back(5);
auto it = std::find( vec1.begin(), vec1.end(), 4 );
if ( it != vec1.end() ) vec1.erase( it );
}
If you want to delete all elements that are equal to 4 using a loop you should write
void function()
{
vector<int> vec1;
vec1.push_back(3);
vec1.push_back(4);
vec1.push_back(5);
for ( auto it = vec1.begin(); it != vec1.end(); )
{
if ( *it == 4 ) it = vec1.erase( it );
else ++it;
}
}