Définir son propre reverse_iterator à partir d'un pointeur nu
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:
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:
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?