Bonjour,
j'ai un probleme avec l'une de mes methodes. Celle-ci efface l'element
d'un vecteur. Malheureusement elle ne fonctionne jamais pour le dernier
element du vecteur.
Voici mon code:
void Graphe::effacerArete(int nomOrigine,int nomDestination)/*Attention, il n'efface pas la derniere arete du vector*/
{
ARETE a;
int i = 0;
vector<ARETE>::const_iterator itr = aretes.begin();
vector<ARETE>::const_iterator fin = aretes.end();
int test = 0;
if(!existeArete(nomOrigine,nomDestination))
{
cout << "ERREUR: L'arete
que l'on veut effacer n'existe pas : "<< nomOrigine << " "
<< nomDestination << endl;
test = true;
}
while(itr != fin && test!=2)
{
a = *itr;
if((a.origine == nomOrigine
&& a.destination == nomDestination) || (a.origine ==
nomDestination && a.destination == nomOrigine))
{
cout <<
"ON A EFFACER L'ARETE : "<< a.origine << " " <<
a.destination << endl;
aretes.erase(aretes.begin() + i);
test ++;
}
itr ++;
i ++;
}
}
Quelqu'un peut il me renseigner sur ce probleme?
Merci d'avance,
Thomas