Bonjour,
je souhaite définir un reverse_iterator pour l'une des mes classes mais je ne vois pas trop comment le faire de manière simple, c'est-à-dire sans créer d'objet supplémentaire.
Concrètement, je dispose d'une classe avec un pointeur nu pour laquelle j'ai déjà défini un itérateur :
Pour définir un reverse_iterator, j'ai besoin de définir des fonctions rbegin et rend, mais j'ai également besoin de pouvoir parcourir mes données en sens inverse avec une surcharge de l'opérateur++, de manière à pouvoir écrire ce genre de boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Foo { public: typedef int * iterator; iterator begin() { return m_data; } iterator end() { return m_data + m_size; } private: size_t m_size; iterator m_data; };
Existe-t-il un moyen simple de définir un tel itérateur à partir d'un pointeur nu?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Foo bar; for(Foo::reverse_iterator data = bar.rbegin() ; data != bar.rend() ; ++data) { /* instructions */; }
Partager