Recherche dans une std::list et suppression.
Bonjour/soir
Je voudrais faire une fonction qui demande le nom d'un element d'une std::list et qui supprime cet element.
J'ai donc fais ceci: La fonction supprimeVin() appel la fonction supprime(), qui se sert de analyseNom().
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
void ListeVins::supprimeVin()
{
std::cout << "Entrez le nom du vin a supprimer" << '\n';
std::string leNom;
std::cin >> leNom;
supprime(leNom);
std::list<Vin>::iterator iter;
std::ofstream uneListeVins("list.txt");
uneListeVins << sesVins.size() << '\n';
uneListeVins << '\n';
for(iter=sesVins.begin(); iter!=sesVins.end(); iter++)
{
toStringF(uneListeVins,(*iter));
}
std::cout << "Vin " << leNom << " supprime" <<'\n';
return;
}
void ListeVins::supprime(std::string nom)
{
std::list<Vin>::iterator ite;
for(ite=sesVins.begin(); ite!= sesVins.end(); ite++)
{
if( analyseNom(*ite,nom))
sesVins.erase(ite);
}
return;
}
bool ListeVins::analyseNom(Vin v,std::string & nom)
{
bool reponse;
if( v.getLeNom()==nom)
reponse=true;
else reponse=false;
return reponse;
} |
Ca compile mais ça marche pas. J'ai beau chercher je ne trouve pas pourquoi.
J'ai testé de rajouter des std::cout à différents endroits, et apparemment le bug arrive apres la fonction erase() dans la boucle for.
Voilà, merci de votre aide.