C ++ - Iterator und Reverse-Iterator

Ich schreibe eineiterator (eigentlich ist esconst_iterator für mein aktuelles Objekt, und ich möchte auch eine erstellenreverse_const_iterator ebenfalls.

Ich sah mich um, um zu sehen, wie das geht, und stolperte überdiese:

Beachten Sie jedoch, dass beim Umkehren eines Iterators die umgekehrte Version nicht auf dasselbe Element im Bereich verweist, sondern auf das vorhergehende. Dies ist der Fall, um das Überholelement eines Bereichs anzuordnen: Ein Iterator, der auf ein Überholelement in einem Bereich zeigt, wird umgekehrt so geändert, dass er auf das letzte Element zeigt (nicht darüber hinaus) ) des Bereichs (dies wäre das erste Element des Bereichs, wenn umgekehrt). Wenn ein Iterator für das erste Element in einem Bereich umgekehrt wird, zeigt der umgekehrte Iterator auf das Element vor dem ersten Element (dies wäre das Element, das am Ende des Bereichs vorbeigeht, falls umgekehrt).

Geschieht dies aus Sicht der Benutzer oder wenn Sie eine Dereferenzierung durchführen?reverse_iterator abstrahiert es dies nicht, indem es Ihnen den Wert / die Referenz des Objekts gibt, das Sie haben?denken es zeigt auf? Ist dies nur ein Implementierungsdetail?

Mein Verständnis war:

for(i = obj.rbegin(); i != obj.rend(); i++)

war gleichbedeutend mit

for(i = obj.begin(); i != obj.end(); i++)

außer in umgekehrter Richtung. Und so*i würde im ersten Fall rückwärts durch den Container und im zweiten Fall vorwärts durch den Container gehen. Ist mein Instinkt richtig?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage