SoWhatIn22 a écrit :
sauf que rend() me renvoie un reverse_iterator, que je ne peux pas convertir en simple iterator. C'est bien là tout mon probème. En fait, les reverse_iterator ne sont utilisables que pour consultation d'une liste, mais pas pour la modification (comme l'insertion ou la suppression d'un élément). Et c'est bien dommage
|
Ah non ce n'est pas un "simple" iterator. C'est un iterateur bi-directionnel, non-aléatoire, et non-const. Ce n'est pas parce que le nom de la classe est simple que la classe elle-même l'est.
Donc je ne vois pas de problèmes en fait: iterator fait tout ce que tu désires, et est accepté par la majorité des fonctions, alors que reverse-iterator n'est accepté nul part, et a même une sémantique d'edit un peu différente.
Il ne faut pas confondre le concept d'un itérateur qui peut aller dans le sens inverse (tout iterateur bi-directionnel dans ce cas ci), avec le conccept d'un itérateur qu'on incrémente pour aller de droite à gauche (uniquement le reverse-iterator).
Reverse-iterator ne sert qu'à être utilisé par des fonctions génériques qui parcourent un container, lorsqu'on souhaite effectivement aller de la fin vers le début en utilisant l'opérateur d'incrémentation. Il n'a aucune autre utilité à ma connaissance.