Problem beim Leeren einer Vector.



  • Hallo,

    Ich habe folgende code ausprobiert.

    Ich habe 2 Vectoren. Wie kann ich am besten leeren?

    [cpp][code]

    Z.erase(Z.begin(),Z.end());

    Z.push_back(Zahl(10,123));
    Z.push_back(Zahl(20,456));

    Z.erase(Z.begin(),Z.end());

    Z.push_back(Zahl(40,12));
    Z.push_back(Zahl(60,45));

    y=Z; //Kopiere komplet in y.
    y.clear(); //Versuch 1 zum löschen
    y.empty(); //versuch 2 zum löschen
    Z.clear();
    Z.empty();
    Z.erase(Z.begin(),Z.end());
    y.erase(y.begin(),y.end()); // versuch 3 zum löschen.

    auch nach 3 Versuche werden die Inhalte nicht gelöscht!

    Gruß
    S.Mathi



  • Hallo

    ich glaub du verwechselt da was.
    Alle diese Methoden sind ausschließlich dazu da, die Elemente aus dem vector zu entfernen. Es werden aber nicht Objekte auf dem Heap (also mit new erstellte) gelöscht, dafür ist vector nicht zuständig, dasa must du selber machen.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich habe nicht mit New erzeugt.

    vector <Zahl> Z;
    vector <Zahl> y;

    Ich habe so erzeugt.

    Ich habe gerade festgestellt, Alle Ansistring Variavlen werden schon inhalt gelöscht, aber die Interger behalten ihre Werte.

    Gruß
    S.Mathi



  • Ich habe nicht mit New erzeugt.

    vector <Zahl> Z;
    vector <Zahl> y;

    Ich habe so erzeugt.

    Ich habe gerade festgestellt, Alle Ansistring Variavlen werden schon inhalt gelöscht, aber die Interger behalten ihre Werte.

    Gruß
    S.Mathi



  • Hallo

    irgendwie verstehe ich nicht, was du für ein Problem hast. Funktioniert doch

    vector<int> Test;
    Test.push_back(10);
    Test.clear();
    unsigned int Count= Test.size(); // Hier ist in Count 0
    

    bis bald
    akari



  • Meinst du vielleicht, dass der vector den Speicher nicht mehr freigibt? Dann solltest du mit einem leeren vector swappen:

    template<class T>
    void clear_vec(std::vector<T>& v)
    {
        std::vector<T> tmp;
        v.swap(tmp);
    };
    


  • Ok Es Funktioniert mit alles. Ich benutze ness's Löschung.

    @akari Vielen Danke auf jeden falls.Meine Problem war eine Interger variable int eine Klasse war. ich habe Vector gebildet aus meine Klasse.

    Gruß
    S.Mathi 🙂 👍


Anmelden zum Antworten