Hi,
also da es so aussieht, als wärst du recht neu in diesem Gebiet, versuch ich dir das genauer zu erklären (an die Profis: Wenn etwas falsch ist, bitte korrigieren
)
Also einen Iterator kannst/solltest du mehr oder weniger mit einem Zeiger gleichsetzen, der auf ein Objekt im Container(in dem Fall ein Vector) zeigt.
Dieser wurde so überladen, dass du dich einfach durch den Container bewegen kannst(Bsp: Iterator++ um auf das nächste Objekt zu zeigen.)
Nun hat ein Vector mehrere Methoden eine von diesen ist "vectorclass.begin();" (wobei vectorclass eine Instanz ist).Diese Funktion liefert einen Iterator zurück, der auf das erste Objekt im Container zeigt. Eine weitere Methode wäre "vectorclass.end();", die auf das Objekt nach dem letzten liefert(Bitte korrigieren.Ich glaube wie ich es formuliert habe ist es falsch!)
Okay...jetzt kannst du dich schonmal durch den Container bewegen.
Aber wie soll man auf "Item" zugreifen?
Wie oben schon gesagt wurde der Iterator so überladen, dass man diesen mit einem Zeiger gleichsetzen kann/sollte(Also der *Operator und ->Operator und =Operator) Also greifst du dann ganz einfach mit Iterator->Name auf deine einzelnen Objekte zu.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <vector>
#include "item.h"
int main()
{
vector<item> Items;
vector<item>::iterator ItemIterator;
Items.push_back(item("Guenther",23); //Hier hast du deinen Vector mit Daten...
Items.push_back(item("Natalie", 22);
Items.push_back(item("Peter", 19);
for(ItemIterator = Items.begin()/*Hier zeigt der Iterator auf das erste Objekt imContainer*/;ItemIterator != Items.end()/*Solange der Iterator nicht beim letzten Objekt+1 ist*/;ItemIterator++/*Solange soll er auf das nächste Objekt zeigen*/)
{
cout << ItemIterator->Name;
cout << ItemIterator->Alter;
}
return 0;
}
|