Hallo,
ich entwickle seit einigen wenigen Wochen/Monaten des öfteren in C++ und habe eine recht grundlegende Frage. Ich versuche das mal anhand eines kleinen Beispiels (eher Pseudocode, Syntax mag eventuell im Detail falsch sein) zu verdeutlichen:
Wäre das so korrekt?
Ich debugge derzeit an so einem Stück Code und habe Angst, dass das Element, das im vector gespeichert ist nach einem for-Schleifendurchlauf ungültig wird.
Ich denke, dass ich eigentlich eine Referenz zum reducedTree in den vector lege, dieser reducedTree aber nur innerhalb der for-Schleife gültig ist und damit Teile des reducedTrees später unerwünscht überschrieben werden?!
Vielleicht hier jemand auflösen, ob da wirklich ein Problem entsteht und wie man das am saubersten löst?
Das Problem (ist es noch das selbe?) scheint mir hier deutlicher:
Hier habe ich ja defintiv nur einen Pointer zum ersten Arrayelement in den vector gelegt. Wird das Array durch späteren Code eventuell überschrieben? Ist das das gleiche Problem wie oben?
Danke schonmal, glaube das ist wirklich eine Basic-Frage, die mich an mehreren Stellen komplett durcheinander bringt...
ich entwickle seit einigen wenigen Wochen/Monaten des öfteren in C++ und habe eine recht grundlegende Frage. Ich versuche das mal anhand eines kleinen Beispiels (eher Pseudocode, Syntax mag eventuell im Detail falsch sein) zu verdeutlichen:
C++:
Tree t(...); // Tree is one of my own created classes
vector<Tree> reducedTrees;
for (unsigned int i=0; i<10; i++) { // reduce tree 10 times
Tree reducedTree = t.reduce(i); // i is used as reduction parameter
reducedTrees.push_back(reducedTree);
}
// Here I want to have 10 differently reduced trees inside the vector reducedTrees.
Ich debugge derzeit an so einem Stück Code und habe Angst, dass das Element, das im vector gespeichert ist nach einem for-Schleifendurchlauf ungültig wird.
Ich denke, dass ich eigentlich eine Referenz zum reducedTree in den vector lege, dieser reducedTree aber nur innerhalb der for-Schleife gültig ist und damit Teile des reducedTrees später unerwünscht überschrieben werden?!
Vielleicht hier jemand auflösen, ob da wirklich ein Problem entsteht und wie man das am saubersten löst?
Das Problem (ist es noch das selbe?) scheint mir hier deutlicher:
C++:
Tree t(...); // Tree is one of my own created classes
vector<int*> reducedTrees;
for (unsigned int i=0; i<10; i++) { // reduce tree 10 times
Tree reducedTree = t.reduce(i); // i is used as reduction parameter
int arr[reducedTree.size()];
for (unsigned int j=0; j<reducedTree.size(); j++) {
arr[j] = reducedTree.getElementById(j);
}
reducedTrees.push_back(arr);
}
// Here I want to have 10 differently reduced trees inside the vector reducedTrees.
Danke schonmal, glaube das ist wirklich eine Basic-Frage, die mich an mehreren Stellen komplett durcheinander bringt...