Auf Listenelement zugreifen
-
Hallo!
Ich habe mir eine Liste(list<Video*> Videoliste;) erstellt die Objekte der Klasse Video enthält, wobei pro Objekt 2 Objektvariablen(beide string) gespeichert sind. Ich möchte jetzt auf die Objekte einzeln zugreifen. Das versuchte ich mit Hilfe eines Iterators (list<Video*>::iterator iter=Videoliste.begin();)(wie in den tutorials beschrieben). Jedoch weiß ich jetzt nicht wie ich auf die einzelnen Obektvariablen zugreife, in den tutorials gehen sie immer nur von einzelnen string oder int objekten aus.
-
Hallo
list<Video*> Videoliste; ... list<Video*>::iterator It = Videoliste.begin(); std::string Wert1 = (*It)->GetWert1();
/Edit : Code korrigiert. Hab * übersehen.
bis bald
akari
-
In diesem Fall eher:
string Wert1 = (*It)->GetWert1();
Was mich zu der Frage bringt: Hat es einen Grund (Polymorphie?), dass Du Zeiger in die Liste packst?
-
Thx Akari und LordJaxom!
Einen wirklich Grund hat es nicht, zuminderst kenn ich ihn nicht, ich programmier zum ersten mal in c++ und such mir den Sachen einfach aus einem Buch heraus. Wäre eine andere Methode besser?
-
Hallo
so wie ich es gemeint hatte
list<Video> Videoliste; ... list<Video>::iterator It = Videoliste.begin(); std::string Wert1 = It->GetWert1();
Vorteil : du must dich nun gar nicht um Speicherverwaltung kümmern. Einfachere Syntax.
Nachteil : Polymorphie nicht möglich, Video muß kopierbar sein, wenn Video "dick" an eigenen Membern ist Umverteilung im Array ineffizient.bis bald
akari
-
Hi,
gibt es nicht ne andere Möglichkeit um auf die Elemente der Liste zuzugreifen (ohne Iterator)?
ich benutze z.Zt. std::vector<> und da kann man ganz einfach mit dem Operator [] auf ein Element zugreifen...
z.B.:std::vector<std::string> myVector; ... std::cout<<"Element nr. "<< i <<"ist...:"<< myVector[i]; ...
ich muss leider nun auf liste umsteigen und das mit dem Iterator finde ich ein bisschen zu aufwendig (nur um ein Element zu lesen)
-
Hallo
Nein der wahlfreie Elementzugriff widerspricht dem Listenprinzip. Warum must du auf Listen umsteigen? Normalerweise ist std::vector immer die erste Wahl.
bis bald
akari
-
ok, hast mich überzeugt..., vielleicht muss ich dann doch nicht...