Ich bin neu in C++, von meinem Verständnis habe ich gedacht, wenn ich die Adresse eines Vektors in einem Funktionsaufruf wie fun(vector<int>&v)
übergeben, dann werden die Werte nicht in einen neuen Vektor von int und kopiert Alle vorgenommenen Änderungen werden zurückreflektiert, und wenn im Fall von fun(vector<int> v)
Werte kopiert werden.Referenz in C++
Aber beim Lesen this link from geeksfrogeeks erkannte ich, dass selbst wenn '&' nicht da ist die Änderungen auf dem Vektor in der Funktion gemacht wird, nachdem es endet.
hier ist der Code:
/* This function prints all nodes that are distance k from a leaf node
path[] --> Store ancestors of a node
visited[] --> Stores true if a node is printed as output. A node may be k
distance away from many leaves, we want to print it once */
void kDistantFromLeafUtil(Node* node, int path[], bool visited[],
int pathLen, int k)
{
// Base case
if (node==NULL) return;
/* append this Node to the path array */
path[pathLen] = node->key;
visited[pathLen] = false;
pathLen++;
/* it's a leaf, so print the ancestor at distance k only
if the ancestor is not already printed */
if (node->left == NULL && node->right == NULL &&
pathLen-k-1 >= 0 && visited[pathLen-k-1] == false)
{
cout << path[pathLen-k-1] << " ";
visited[pathLen-k-1] = true;
return;
}
/* If not leaf node, recur for left and right subtrees */
kDistantFromLeafUtil(node->left, path, visited, pathLen, k);
kDistantFromLeafUtil(node->right, path, visited, pathLen, k);
}
Die Änderungen in dem besuchten Array durch eine Funktion sind auf den zweiten Aufruf KDistanceFromLeafUtil sichtbar gemacht, ohne ‚&‘ zu verwenden, ist dies ähnlich dem, was in Java geschieht dh referenziert wird kopiert? Wo bin ich falsch gelaufen, um es zu verstehen?
Ein Array ist kein Vektor. Sie verhalten sich anders. Sie vergleichen Äpfel mit Orangen. – NathanOliver
So fügen Sie der @NathanOliver-Anweisung hinzu: Sie können Arrays nicht nach Wert übergeben. Überhaupt. Sie übergeben tatsächlich einen Zeiger auf das erste Element. –
Danke !! Ich erkannte, dass ich Arrays mit Vektoren vergleiche. –