Frage zu Listen
-
Angenommen ich habe eine kleine Klasse:
class CBox { public: int x,y; }; CBox test;
jetzt erstelle ich eine liste die objekte dieses types aufnehmen kann:
list <CBox> box; list <CBox>::iterator pos;
und füge dann ein objekt in die liste ein:
test.x = 100; test.y = 100; box.push_back(test);
wie kann ich dann später wieder auf diese x und y-werte zugreifen(angenommen es werden nun z.B keine weiteren objekte mehr hinzugefügt) ?
pos = box.begin(); *pos. // und nun ?
Kenn mich leider so gut wie nicht in der STL aus..
-
Du kannst einen Iterator hier wie einen Pointer behandeln. Also:
pos = box.begin(); (*pos).x = 10; // oder auch: pos->y = 200; // oder CBox found(*pos); // usw.
Stefan.
-
mh bin echt dumm
thx
-
Mh nochmal ne blöde Frage.. Wie kann ich ein einzelnes Objekt innerhalb der Liste dann addressieren. Also angenommen ich habe eine List mit 30 Objekten, wie kann ich dann z.B das drittletzte Listenobjekt ansprechen ?
-
std::list<> unterstützt für den Direktzugriff nur den Anfang und das Ende der Liste. Wenn du wirklich das n-te Element ansprechen mußt, solltest du vielleicht besser std::vector<> verwenden. Da gibt es operator[](), so daß du wie bei einem C-Array schreiben könntest:
box[10].x=100;
Stefan.