TODO Strou4 587
Ein Iterator ist ein Objekt, das zu einem gegebenen Container ein Objekt daraus repräsentiert (oder auch keines möglicherweise).
Einen Iterator kann man manipulieren, indem man ihm einen Wert zuweist (beispielsweise das erste Element des Containers), und indem man ihn um ein Element vor- oder zurücksetzt.
Damit erfüllt ein Iterator in etwa die selbe Aufgabe wie ein Zeiger auf ein Feldelement: auch dieses kann man auf ein Element richten, sowie mit ++ oder - über die Elemente des Feldes wandern lassen. Tatsächlich können Iteratoren als Zeiger auf den zugrundeliegenden Datentyp eines Containers implementiert werden, wobei natürlich operator++() und operator-() so überschrieben werden müssen, daß sie den nicht auf ein im Speicher davor oder dahinter liegendes Objekt richten, sondern dem Container entsprechend das benachbarte Element finden.
Iteratoren sind in <iterator>
definiert. Wenn man Iteratoren
allerdings auf die Standardcontainer anwendet, dann braucht dafür kein
#include
geschrieben werden, weil die Headerdatei des jeweiligen
Containers (<vector>
etc.) ohnehin <iterator>
einbindet.
Folgende Operationen sind mit Iteratoren möglich:
Beispiel:
vector<int> meinFeld; vector<int>::iterator position;Hier wird ein Feld mit dem Namen meinFeld definiert, sowie ein Iterator position.
Beispiel:
Man kann Iteratoren allerdings auch auf eigene Container anwenden, wenn sie ein paar Mindestanforderungen erfüllen:
Wenn der Iterator beispielsweise ein Zeiger auf den zugrundeliegenden Datentyp sein soll, dann könnte die Definition so aussehen:
AnyWare@Wachtler.de