map : suppression via un itérateur et incrémentation de l'itérateur
11 réponses
MGN
bonjour,
une question bête, mais je veux être sûr de ne pas me tromper :-)
_values est un objet map
code :
it=std::find_if(_values.begin(),_values.end(),upper_keys);
while(it!=_values.end())
{
_values.erase(it);
it=std::find_if(it,_values.end(),upper_keys);
// <- ma question est ici
// it=std::find_if(++it,_values.end(),upper_keys);
<- version fausse
}
je supprime l'objet pointé donc il ne faut pas incrémenter
l'itérateur...C'est bien ça ?
Il n'y a pas de risque avec cette écriture ? par exemple si it pointait vers
le dernier élément du conteneur ?
Merci pour vos lumières
Marc
compilo), soit en changeant juste la STL (par exemple, en mettant celle de SGI à la place de celle fournie avec le compilo).
j'ai l'impression que ça se fait pas comme ça avec mon compilo (C++ Builder 6). J'ai des constantes symboliques définies un peu partout et propres à mon implémentation. Et puis si des classes de la VCL utilisent (ce qui me semble très probable) la STL. Si je change d'implémentation, je risque la catastrophe. Non ?
En général, oui. Au départ, quand les compilateurs introduisaient la STL, c'était possible, parce que la STL était un « en plus », qu'ils ajoutaient comme ça, pour être plus ou moins conforme. Entre temps, en revanche, ils ont eu le temps de faire évoluer leurs propres bibliothèques, pour qu'elles se servent aussi de la STL.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Marc G wrote:
compilo), soit en changeant juste la STL (par exemple, en
mettant celle de SGI à la place de celle fournie avec le
compilo).
j'ai l'impression que ça se fait pas comme ça avec mon compilo
(C++ Builder 6). J'ai des constantes symboliques définies un
peu partout et propres à mon implémentation. Et puis si des
classes de la VCL utilisent (ce qui me semble très probable)
la STL. Si je change d'implémentation, je risque la
catastrophe. Non ?
En général, oui. Au départ, quand les compilateurs
introduisaient la STL, c'était possible, parce que la STL était
un « en plus », qu'ils ajoutaient comme ça, pour être plus ou
moins conforme. Entre temps, en revanche, ils ont eu le temps de
faire évoluer leurs propres bibliothèques, pour qu'elles se
servent aussi de la STL.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
compilo), soit en changeant juste la STL (par exemple, en mettant celle de SGI à la place de celle fournie avec le compilo).
j'ai l'impression que ça se fait pas comme ça avec mon compilo (C++ Builder 6). J'ai des constantes symboliques définies un peu partout et propres à mon implémentation. Et puis si des classes de la VCL utilisent (ce qui me semble très probable) la STL. Si je change d'implémentation, je risque la catastrophe. Non ?
En général, oui. Au départ, quand les compilateurs introduisaient la STL, c'était possible, parce que la STL était un « en plus », qu'ils ajoutaient comme ça, pour être plus ou moins conforme. Entre temps, en revanche, ils ont eu le temps de faire évoluer leurs propres bibliothèques, pour qu'elles se servent aussi de la STL.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34