C ++ Verständnisproblem: Iterator

Hallo Forum, ich lerne momentan C++ und beschäftige mich gerade mit Vekroren. Doch nun habe ich das Problem das ich die Initialisierung vom Iterator in folgendem Codeblock nicht verstehe:

vector vDaten(3); //Vectorobjekt erstellt
vector::iterator i; //Was passiert hier???

Macht für mich noch keinen Sinn. Wäre sehr froh wenn mir jemand den genauen Ablauf in der 2. Zeile erklären würde und was ein Iterator genau ist.

Freundliche Grüsse
openglwithc++

Hi,

die Zeile deklariert einen Iterator auf einen vector ganz einfach.

Iteratoren kannst du dir wie intelligente Zeige vorstellen. Du kannst sie erhöhen, verringern und aauch dereferenzieren.

Dein Iterator zeigt noch auf nichts. Du must den erst mit deinem Vector verbinden.
Beispiel:

 std::vector meinVector;
 std::vector::iterator meinIterator;

 // Den Vector mit irgend was befüllen

 for (meinIterator = meinVector.begin(); meinIterator != meinVector.end(); meinIterator++)
 std::cout 

Das gibt zum Beispiel den kompletten Inhalt deines Vectors aus, egal, wie viel drin gespeichert ist.

Wirklich interessant werden Iteratoren vor allem im Zusammenspiel mit den Algorithm. Dann kann man zum Beispiel den Code oben auf folgende Zeile verkürzen:



    
    std::copy(meinVector.begin(),meinVector.end(),std::ostream\_iterator(cout,"\n"));




Da gibts noch einiges mehr, was man damit machen kann. Schau mal in einem guten C++ Buch deiner Wahl nach.

Grüße,

Vielen Dank, hat mir sehr weitergeholfen. Aber was ich immer noch nicht so ganz verstehe, warum wird der Iterator direkt im Vektor, statt in der Instanz vom Vektor initialisiert?

So ein Iterator kann in jedem Vektor des passenden Typs iterieren, so kann man zum Beispiel mit einem Iterator zwei Vektoren durchlaufen. Wenn man im ersten Vektor am Ende angekommen ist, setzt man ihn auf den Anfang des zweiten. Die Dereferenzierung brauch sich dann nicht drum zu kümmern, ob ich noch im ersten Vektor oder schon im zweiten bin.

Gruß Pit.