Iterateur et multimap<>

Iterateur et multimap<> - C++ - Programmation

Marsh Posté le 31-03-2004 à 18:35:23    

Hello tout le monde !,
Voila j'utilise un multimap (de la STL) et un itérateur afin de le parcourir, jusqu'ici rien de très spécial.
Mais voila mon problème j'aimerai effacer certains 'champs' du multimap pendant le parcours (erase) mais seulement je ne peux pas sauvegarder  l'itérateur sur le 'champs' d'après puis effacer le courant et reprendre mon parcours là ou j'en étais, cela ne fonctionne pas, sans doute à cause de la repésentation interne en arbre.
 
Est-ce que qqun peux m'aider ?
merci d'avance !

Reply

Marsh Posté le 31-03-2004 à 18:35:23   

Reply

Marsh Posté le 31-03-2004 à 18:36:59    

c'est normal. les modifications invalident les itérateurs.
 
la seule solution, c'est de mémoriser ce que tu veux supprimer.

Reply

Marsh Posté le 31-03-2004 à 19:28:35    

ca marche ptet pas pour tous les itérateurs :
 

Code :
  1. for (vector<truc>::iterator i = rien.begin(); i != rien.end(); i++)
  2. {
  3. if (b)
  4.  i = rien.erase(i);
  5. if (i == rien.end())
  6.  break;
  7. }


 
(ca marche avec les vector en tout cas, les autres faut voir)

Reply

Marsh Posté le 31-03-2004 à 19:30:40    

sur les séquences, la signature et le comportement de erase diffèrent

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed