problème avec itérator c++ - C++ - Programmation
Marsh Posté le 01-03-2010 à 07:09:11
tu sais qu'il existe std::find qui t'eviteras d'ecrire un while moche.
tu std::fidn et tu erase l'iterateur qui t'es renvoyé
Marsh Posté le 01-03-2010 à 15:23:41
Merci de ta réponse mais j'ai résolu mon problème c'était le test que je fais qui ne marche pas car je luis donne des un P invalide comme delete(0,1) alors que P varie entre 1 et 3 c'est juste à cause de moi je voulais que les contrats ont une clé comme les vecteurs commencent à 0 mais j'ai oublié de lui mentionner ça en tout cas j'ai perdu 3 jours à m,arracher les cheveux mais c,est comme ça je vais progresser .
bonne journée
Marsh Posté le 01-03-2010 à 15:46:42
Si tu veux progresser, écoute Joel F!
Ton truc s'écrit en 2 lignes de vrai C++.
Marsh Posté le 01-03-2010 à 01:47:55
Bonjour,
j'ai un problème avec une fonction qui a pour objectif de supprimer un élement d'un vecteur en fait j'ai un vecteur de classe economie
les attributs de la classe economie sont de contrats et un double (contrats c'est une classe qui a une cle) le code de la fonction est le suivant
void Delet(int P,int Q,vector<economie>&Slist)
{ vector<economie>::iterator vItr = Slist.begin();
while ( vItr != Slist.end() )
{if ( vItr->mFirst.cle == P && vItr->mSecond.cle == Q )
{vItr = Slist.erase( vItr );
break;
}
else vItr++;
}
}
les entiers P et Q sont les clés des deux contrats donc la fonction va vérifier si les deux clés existent et va localiser puis supprimer l,element mais ma lheurseument quand je teste ma fonction je vois qu'elle n'a aucun effet
Merci de m'aider. j,ai cherché sur internet une réponse à mon problème je vois parfois les itérateurs deviennent invalide mais je ne vois pas comment de les rendre valides merci