Bonjour,
Je dispose d'un multimap et d'un iterator.
Je parcours le mutimap avec mon iterator (begin vers end), arrivé à un certain point(pIt) dans ce multimap je voudrais repartir en arriere pIt vers begin.
Comment faire?
Merci
Bonjour,
Je dispose d'un multimap et d'un iterator.
Je parcours le mutimap avec mon iterator (begin vers end), arrivé à un certain point(pIt) dans ce multimap je voudrais repartir en arriere pIt vers begin.
Comment faire?
Merci
Un itérateur de map est un bidirectional iterator. Tu as donc le droit de faire -- dessus
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Ben oui
J'avais codéCe qui me générait une erreur C2784 'reverse_iterator...'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cIt = cIt - n; avec cIt: const_iterator et n: unsigned int
Merci
tu peux faire --, pas -n.
Sinon c'est plus pratique d'utiliser un adapteur moi je trouve. Surtout si tu utilises les ranges et foreach.
L'autre solution est d'utiliser un reverse iterator via std::map::rbegin() et std::map::end().
L'itterateur, en utilisant ++, ira de la "fin" vers le "début".
Oui je sais mais dans le cadre d'une multimap ça imposerai de tester la clé à chaque boucle pour savoir si la paire en cours nous concerne étant donné que equal_range ne renvoit qu'un iterator et non un reverse_iterator.
De plus, j'ai testé, dans n'importe quel sens, si l'on supprime un objet dont pointe l'itérateur, il est perdu, on ne peut plus avancer ni reculer.
Je chercherai d'avantage lors de ma phase d'optim
Merci quand même pour ta réponse,
A bientôt
std::reverse_iterator te permet de convertir n'importe quel itérateur en un itérateur qui fonctionne dans le sens inverse.
Partager