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 :

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;
};
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
Foo bar;
for(Foo::reverse_iterator data = bar.rbegin() ; data != bar.rend() ; ++data)
{ /* instructions */; }
Existe-t-il un moyen simple de définir un tel itérateur à partir d'un pointeur nu?