Pointer auf LastElement im Vector
-
Hallo,
ich habe mal wieder ein Problemchen mit Vectoren!
... myStruct * hilf; myStruct temp; vector<myStruct> data; data.push_back (temp); hilf= & data.back(); //wird zwar kompiliert, doch gibt Fehler wegen unbefugtem Speicherzugriff etc. aus! (ohne '&' wird es nicht kompiliert) ...also ich will, dass hilf auf das letzte Element von data zeigt!!!
thx4help
-
K.A. schrieb:
also ich will, dass hilf auf das letzte Element von data zeigt!!!
Das tut hilf auch, solange der vector nicht mehr verändert wird. Zum Beispiel
myStruct temp; vector< myStruct > data; data.push_back( temp ); myStruct* hilf= & data.back(); // hier zeigt hilf auf das letzte Element data.push_back( temp ); // und hier vielleicht in's Nirwanavector hat die Freiheit, die Position seiner Elemente im Speicher zu ändern. Wenn Du einen Container haben möchtest, der seine Elemente da läßt, wo er sie beim Einfügen hinpackt, so nehme std::list. Hier kannst Du Dir dann die Iteratoren merken, die bleiben gültig, solange das zugehörige Element nicht aus der Liste gelöscht wird.
Gruß
Werner
-
so ein riesenmist!!!
danke für deine Antwort.
(jetzt muss ich das ganze programm umschreiben!!!)thx
-
Naja, wenn du weißt wie groß der Vektor maximal werden kann, kannst du ihn auch einfach mit dieser Größe initialisieren oder diese nachträglich mit v.reserve (size) festlegen. Dann wird kein neuer Speicherblock angefordert und die Zeiger behalten ihre Gültigkeit.