vector



  • delete v[i];
    //bzw.
    delete[] v[i];
    


  • Skym0sh0 schrieb:

    //bzw.
    delete[] v[i];
    

    Ist hier irrelevant, da er sein Objekt mit new basis angelegt hat. Die Version mit den []-Klammern ist nur bei Arrays notwendig. Nur, um ihn nicht zu verwirren...



  • nene sehr interessant

    würde mir delete[] den gesamten vector freimachen?
    oder wäre das wenn ich im vector ein array oder die addresse von einem gespeichert hätte?

    suche nach einer möglichkeit meinen vectro möglichst schnell von den elementen befreien zu können
    imo mach ich alles mit for schleifen

    gibts in c++ auch solche schleifen wie in java for(e ...)?



  • muss ich jede funktion die evt überschrieben werden könnte als virtual deklarieren?



  • gasst schrieb:

    nene sehr interessant

    würde mir delete[] den gesamten vector freimachen?

    Eben nicht, deshalb ja hier irrelevant. 😉

    gasst schrieb:

    oder wäre das wenn ich im vector ein array oder die addresse von einem gespeichert hätte?

    Ja, wenn ein Element ein Zeiger auf ein mit new[] dynamisch allokiertes Array ist, musst du den Speicherbereich mit delete[] freigeben. Allerdings wird das kaum je vorkommen...

    gasst schrieb:

    suche nach einer möglichkeit meinen vectro möglichst schnell von den elementen befreien zu können
    imo mach ich alles mit for schleifen

    Du weisst aber schon, dass std::vector dazu konzipiert wurde, komfortabel dynamische Arrays handzuhaben, indem dir die Speicherverwaltung abgenommen wird und Methoden für den Zugriff bereitgestellt werden? Wieso speicherst du Zeiger und keine Objekte? Brauchst du polymorphes Verhalten?



  • leider brauch ich das

    habe ne klasse object
    von der sich alle meine figuren im spiel ableiten
    damit der mir nicht einfach alles auf die basisklasse reduziert
    brauch ich zeiger

    vlt wärs sinnvoll mir mal die boost klassen anzuschaun aber hab keine ziet dafür ^^

    nun die frage mit dem muss zeiger sein wäre beantwortet...
    arrays sind mir da noch komplizierter denk ich



  • Du kannst auch Smart Pointer benutzen, dann wird dir das manuelle delete erspart.



  • smart pointer??

    was ist das? wier verwende ich es ?



  • gasst schrieb:

    vlt wärs sinnvoll mir mal die boost klassen anzuschaun aber hab keine ziet dafür ^^

    Naja, die sind in dieser Hinsicht halt schon konfortabler. Das Interface ist fast identisch mit den STL-Containern.

    gasst schrieb:

    smart pointer??

    was ist das? wier verwende ich es ?

    Das sind "schlaue Zeiger", die den angeforderten Speicherbereich automatisch freigeben, wenn er nicht mehr gebraucht wird. Die Smart-Pointer sind entweder in Boost oder in deiner TR1-Implementierung der Standardbibliothek vorhanden.



  • Nexus schrieb:

    gasst schrieb:

    vlt wärs sinnvoll mir mal die boost klassen anzuschaun aber hab keine ziet dafür ^^

    Naja, die sind in dieser Hinsicht halt schon konfortabler. Das Interface ist fast identisch mit den STL-Containern.

    Ich würde es garnicht erst beantworten. Er hat ja schon keine Zeit zum Lesen, dann braucht man es auch nicht vorzukauen 😉


Anmelden zum Antworten