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
Version imprimable
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
:arf:
Ben oui :oops:
J'avais codéCe qui me générait une erreur C2784 'reverse_iterator...'Code:
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.
C'est quoi un adaptateur ?
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.