Wo speichert std::vector die Daten ab?
-
Ich habe mal eine kleine Anfängerfrage zu std::vector.
Wenn ich das hier schreibe:std::vector<int> integerwerden alle Daten auf dem Stack gespeichert oder?
Macht es bei einem Vector dann Sinn, die Werte irgendwie dynamisch anzulegen, in so etwa:std::vector<int*> integerund wie gibt man sowas dann am besten frei? Bisher ist mir nur eine for-Schleife in den Sinn gekommen, oder gibts da auch bessere Methoden?
-
Nein, ein std::vector speichert die Daten am Heap ab. Im Prinzip nur ein Array welches gekapselt wird damit du dir den Aufwand sparst.
MfG SideWinder
-
Benutze einfach die erste Variante; der Vektor speichert "sich selbst" auf dem Stack und die Daten auf dem Heap.
Wenn du alles auf dem Heap haben willst, solltest du den Vektor selbst mitnewerstellen:std::vector<int> *integer = new vector<int>();Vergiss das
delete integernicht!
Sinnvoll ist das aber nicht, und ich glaube nicht, dass du das benötigst
Gruß
-
@theliquidwave: Was übrigens weiterhin nicht verhindert, dass der Zeiger auf dem Stack liegt. Also ist das sehr sehr sinnlos, hmm?

MfG SideWinder
-
Naja. Daten wie Größe, mhh. Ok, hast gewonnen. Eigentlich wird ja nur noch die Größe gespeichert

Gruß

-
Danke für eure Antworten.
Ist ja super, dass das schon alles gekapselt ist
-
SideWinder schrieb:
Im Prinzip nur ein Array welches gekapselt wird damit du dir den Aufwand sparst.
Ein Array wäre std::tr1::array. Bei std::vector geht es ja um die Kapslung der dynamischen Speicherverwaltung.
-
[haarspalt]
std::vector speichert seine Daten dort wo sein Allocator Speicher besorgt
[/haarspalt]