Puis-je convertir un itérateur inverse, à un avant itérateur?

J'ai une classe appelée Action, qui est essentiellement un wrapper autour d'une deque de Move objets.

Parce que j'ai besoin de traverser la deque de Moves à la fois en avant et en arrière, j'ai hâte d'itérateur et un reverse_iterator en tant que variables membres de la classe. La raison pour cela est parce que j'ai besoin de savoir quand je suis passé devant la "fin" de la deque, à la fois quand je suis aller en avant ou en arrière.

La classe ressemble à ceci:

class Action
{
public:
    SetMoves(std::deque<Move> & dmoves) { _moves = dmoves; }
    void Advance();
    bool Finished() 
    {
        if( bForward )
            return (currentfwd==_moves.end());
        else
            return (currentbck==_moves.rend());
    }
private:
    std::deque<Move> _moves;
    std::deque<Move>::const_iterator currentfwd;
    std::deque<Move>::const_reverse_iterator currentbck;
    bool bForward;
};

La Advance fonction est la suivante:

void Action::Advance
{
    if( bForward)
        currentfwd++;
    else
        currentbck++;
}

Mon problème est que je veux être en mesure de récupérer un itérateur à l'actuel Move objet, sans avoir à se demander si je vais vers l'avant ou vers l'arrière. Cela signifie une fonction renvoyant un type d'itérateur, mais j'ai deux types.

Dois-je oublier de retourner un itérateur, et retour const référence à un Move objet à la place?

meilleurs vœux,

BeeBand

  • La réponse à votre question "puis-je avoir un reverse_iterator à partir d'un avant itérateur" est oui et ici
InformationsquelleAutor BeeBand | 2010-01-10