Was passiert wenn der Vector sich vergroessert





  • OK, aber was ist mit der von dir vorgeschlagenen Konstruktion?

    vector<Node> allNodes;
    size_t current;
    
    //Zugriff dann über:
    Node& node = allNodes[current];
    

    Ich meine hier besonders die Referenz. Hast du dir das gut überlegt?



  • Ja, habe ich!

    Ok, etwas länger:
    Die Referenz soll ja nur beim Zugriff temporär darauf benutzt werden - nicht als Member. Es ging ja darum, warum ein "Node-Zeiger" schlecht ist und darum besser ein Index als Variable benutzt werden soll.
    Und ich habe nur gezeigt, wie man dann auf ein Element des std::vector mit Hilfe der Index-Variablen zugreift...

    Daher ist auch ein Iterator nicht geeignet, ein aktuelles Element zu speichern (denn auch dieser wird beim internen Vergrößern (= Umkopieren) ungültig).

    So, mehr habe ich hierzu nicht zu sagen -)



  • Mitleid schrieb:

    Ich meine hier besonders die Referenz. Hast du dir das gut überlegt?

    Die Referenz wird ja nur gefährlich, wenn man während ihrer Lebensdauer den Container verändert und sie danach noch dereferenziert. Ich deklariere teilweise auch lokale Referenzen auf Containerelemente, z.B. wenn der Index komplexer berechnet wird.


Anmelden zum Antworten