Bonjour,
j'ai un problème avec les itérateurs de vector. Mon code de base est trop long pour que je le mette ici. Je vous donne donc un exemple qui explique le problème
C'était mon idée de départ. elle ne marche pas car d'après ce que j'ai trouvé sur le net lorsque que l'on fait un push_back tous les iterator sont modifies et deviennent invalide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for(vector<int>::iterator i=v.begin();i!=v.end();) { cout<<*i<<endl; if(*i==0) v.push_back(5); if(*i=2) v.erase(i) else i++ }
J'ai donc fait comme suit
Cependant ce code ne fonctionne pas non plus. Il déclenche une erreur de lecture illegal après un erase pour un élément issue du push_back.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for(unsgined int i=0;i<v.size();) { cout<<i<<v.at(i)<<endl; if(v.at(i)==0) v.push_back(5); if(v.at(i)==2) v.erase(v.begin()+i); else i++ }
Je sais pas si j'ai été clair. N'hésitez pas à me demander plus d'information.
Merci
Partager