2 Fragen zu Queue?



  • 1. queue <struct Node*> queue;
    wie zerstöre ich die wieder einfach delete queue(); oder bei
    vector delete vector; -> auf den vector hab ich einen zeiger drauf muss ich einfach delete zeiger->vector; ?

    queue <struct Node*> queue;  
        queue.push(pNode);   
        queue.push(pNode->pLeft);  
        queue.push(pNode->pRight);  
        while (!queue.empty()) {
            queue.pop();
            cout<<pNode->value;
    

    als ausgabe bekomme ich da 3 mal 1 == Wert von der Wurzel habe aber 3 verschiedene werte im baum (1,2,3) ? warum bekomme ich nicht 1,2,3?



  • ohne new auch kein delete. In deinem Code gibt's kein new, also brauchst du auch kein delete.

    Solltest du ein mit new Angelgtes Objekt pushen, musst du es irgendwann wieder herausholen und löschen. Hierfür eigenen sich Smart-Pointer jedoch wesentlich besser.



  • angenommen ich hab im vector 20 werte drinnen und einen zeiger auf ihn jetzt will ich aber den speicherplatz des vectors freigeben und einen neuen vector erzeugen auf den ich wieder den zeiger zuweise? wie geb ich denn den speicherplatz frei -- delete zeiger; zeiger = NULL; --
    ????????????????



  • Nochmal, du kannst einen Zeiger auf deinen Vector machen, aber solange du durch diesen Zeiger den Vector nicht mit new initialisierst, kannst du auch kein delete machen.
    Vielleicht hilft dir queue<...>::clear() weiter.


Anmelden zum Antworten