Je veux effacer un élément à partir d'un vecteur à l'aide de la méthode d'effacement. Mais le problème, c'est que l'élément n'est pas garanti pour se produire qu'une seule fois dans le vecteur. Il peut être présent plusieurs fois et j'ai besoin d'effacer tous les d'eux. Mon code ressemble à ça:
void erase(std::vector<int>& myNumbers_in, int number_in)
{
std::vector<int>::iterator iter = myNumbers_in.begin();
std::vector<int>::iterator endIter = myNumbers_in.end();
for(; iter != endIter; ++iter)
{
if(*iter == number_in)
{
myNumbers_in.erase(iter);
}
}
}
int main(int argc, char* argv[])
{
std::vector<int> myNmbers;
for(int i = 0; i < 2; ++i)
{
myNmbers.push_back(i);
myNmbers.push_back(i);
}
erase(myNmbers, 1);
return 0;
}
Ce code évidemment se bloque parce que je suis l'évolution de la fin du vecteur lors de l'itération à travers elle. Quelle est la meilleure façon d'atteindre cet objectif ? c'est à dire est-il un moyen de le faire sans une itération à travers le vecteur à plusieurs reprises ou de la création d'un plus copie du vecteur?