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.