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 nicht
    

    oder 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
    

Anmelden zum Antworten