iterator



  • welcher iterator nimmt den
    Container::begin() und Container::vector::rbegin()
    auf?



  • 😕

    was meinst du genau?

    Also wenn es dir darum geht, eine Funktion/Klasse zu schreiben, die mit beliebigen Iteratoren arbeitet, dann musst du Templates nehmen, wie das in der Std-Library auch gemacht wird

    template<typename Iterator>
    void foo(Iterator &begin,Iterator &end);
    


  • dar Type des Iterators entscheidet sich erst zur Laufzeit
    und ich war mir nicht sicher ob rbegin() immer auf das gleiche element wie --end() zeigt;
    deswegen wollte ich einen Iterator nehmen der sowol einen reverse_iterator als auch ein forward_iterator aufnehmen kann.



  • da musst du mit Templates arbeiten oder wenn das nicht geht, solltest du dir mal boost::any anschauen. Für Iteratoren gibt es keine gemeinsamme Basis.



  • vector::rbegin
    const_reverse_iterator rbegin() const;
    reverse_iterator rbegin();
    The member function returns a reverse iterator that points just beyond the end of the controlled sequence. Hence, it designates the beginning of the reverse sequence.

    vector::end
    const_iterator end() const;
    iterator end();
    The member function returns a random-access iterator that points just beyond the end of the sequence.

    Wenn ich das aus der Sichtweise des Iterators sehe, dann heisst das, dass end()-1==rbegin() ist oder?
    Immer?



  • .b7f7 schrieb:

    Wenn ich das aus der Sichtweise des Iterators sehe, dann heisst das, dass end()-1==rbegin() ist oder?
    Immer?

    Jein.
    Sie zeigen dann zwar beide auf das selbe Element, aber das Verhalten ist unterschiedlich (iterator vs reverse_iterator)



  • Shade Of Mine schrieb:

    .b7f7 schrieb:

    Wenn ich das aus der Sichtweise des Iterators sehe, dann heisst das, dass end()-1==rbegin() ist oder?
    Immer?

    Jein.
    Sie zeigen dann zwar beide auf das selbe Element, aber das Verhalten ist unterschiedlich (iterator vs reverse_iterator)

    das wollte ich damit ausdrücken.


Anmelden zum Antworten