vector kopieren

  • Hallo,

    ich habe ein zwei dimensionales vector und möchte die gespeicherte daten bearbeiten
    aber vector soll nicht geändert werden

    mit getTable() bekomme ich eine referenz auf vector also wenn ich
    vector<vector<int>> copy = getTable(); dann wird in copy acuh die referenz kopiert und wenn ich dann die vector copy ändere ändert sich orginale vector automatisch???
    ich komme nicht weiter bin für jede hilfe dankbar

  • Hallo!

    Dazu sollte man einmal überlegen, was getTable() macht:
    1. Gibt getTable() eine Referenz auf eine globale Variable (damit sind auch statische Variablen und namespace-Elemente gemeint) zurück, dann:

    Code
    vector< vector<int> >& ref = getTable();


    2. getTable() erzeugt den Vektor erst. Dann sollte getTable() auf keinen Fall eine Referenz zurückgeben. Referenzen auf lokale Objekte führen zu undefiniertem verhalten. Denn am Ende der Funktion wird das Objekt gelöscht, auf das du die Referenz zurückgibst. Also einfach die Kopie wagen. Ein ordentlicher Compiler sollte dieses Kopieren weg-optimieren. (siehe hiere) Ansonsten kannst du den Vektor auch als Referenz übergeben und die Referenz dann befüllen. Aber Ersteres ist eigentlich sauberer. Also mach dir keine Sorgen. ;)

    Viele liebe Grüße
    The User