vector richtig bereinigen
-
hallo,
wie muss man den vector richtig reinigen?
so??
//myVec ist voll mit normalen ints (keine pointer auf ints) std::vector<int>::iterator it = myVec.begin(); for(it;it!=myVec.end();++it) delete *it //geht ja nichtoder so?
myVec.clear();brauche ich die iterator-variante nur wenn der inhalt des vectors zeiger sind??
-
Jop, brauchst nur freizugeben wenn du Zeiger auf den Heap speicherst.
-
wenns rohe zeiger sind brauchst du beides, ansonsten nur clear()
-
Wobei das alles natürlich auch vom Destruktor erledigt wird. Man sollte vielleicht noch dazu sagen, dass clear() nur die Größe auf 0 setzt aber nicht den bereits allozierten Speicher freigibt. Ein Aufruf von capacity zeigt das.
Wenn man auch den internen Speicher aufräumen will, kann man sowas nutzen.vector<int> myVec; // irgendwie füllen. vector<int>().swap(myVec); // leer machen und Speicher freigeben