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


  • Mod

    unregister schrieb:

    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???

    Nein! Denn Du hast ein eigenständiges neues Objekt definiert.

    vector<vector<int>> copy = getTable();
    

    Wenn Du auch die Quelle verändern willst, dann musst Du auch eine Referenz verwenden.

    vector<vector<int>> &copy = getTable();
    

    Jetzt kannst Du nur hoffen, dass getTable keine const Referenz zurückgibt 😉



  • getTable sieht so aus

    vector<vector<Node*>>& GOLModel::getTable()
    {
    	return table;
    }
    

    Node hat x,y und value, jetzt möchte ich in copyTable die value = 1 setzen aber es soll in table 0 bleiben
    aber wenn ich sie gleich setze dann ändert sich beide :))
    eigentlich brauche ich eine eigenständiges obkect oder??



  • Hallo,

    zwei Mal ja.

    MfG,

    Probe-Nutzer



  • ich glaube ich bin zu blöd
    also wie muss ich copy definieren so dass sich table nicht ändert wenn ich copy ändere
    wenn ich vector<vector<Node*>> copy = getTable();
    setze gehts nähmlich nicht
    dann bekommt copy die gleiche adresse wie table ???



  • Ja, natürlich, das kannst du an der Funktion am &-Zeichen erkennen:

    vector<vector<Node>>& GOLModel::getTable()*

    Du bekommst eine Referenz, und nie eine Kopie der table. Entweder bietet die GOLModel-Klasse eine copy/clone-Methode an, oder du musst alles selber kopieren, und ein neues GOLModel-Objekt erstellen.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten