iterator end ();
-
Hi, warum hat man sich bei der std library eigentlich dazu entschlossen, dass die Funktion
iterator end (); const_iterator end () const;bei vector, list und map jeweils auf ein past-the-end Element zeigt?
Statt
for ( it=myvector.begin() ; it < myvector.end(); it++ )hätte man dann ja auch problemlos
for ( it=myvector.begin() ; it <= myvector.end(); it++ )schreiben können und end() würde wirklich auf das letzte Element zeigen. So wird sollte man letzteres verwenden einfach noch ein weiteres Element mit dem default Wert ausgegeben.
-
- Weil es nicht unbedingt ein letztes Element gibt.
- Damitbegin() + size() == end().
- Weil!=einfacher funktioniert als<=.
- Weil<=beilistnicht in konstanter Zeit funktioniert.
-
Es gibt Iteratoren, für die es gar keinen Kleiner-Operator gibt. Da kann man nur den Ungleich-Operator verwenden.
Wie würdest du denn z.B. den Kleiner-Operator bei Iteratoren über eine Liste definieren? Durch die gesamte Liste laufen und nach dem zweiten Operanden suchen? Das würde nicht mehr in konstanter Zeit gehen, sondern von der Listenlänge linear abhängen.
-
Die wichtigste Frage hier lautet, wie verhalten sich die Iteratoren einer leeren Menge.
