vector kopieren
-
Hallo,
ich habe ein zwei dimensionales vector und möchte die gespeicherte daten bearbeiten
aber vector soll nicht geändert werdenmit 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
-
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>> © = 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