Cuando pasamos una array a una función , en realidad se pasa un puntero .
Sin embargo, para pasar un vector hay dos formas de hacerlo:
- Pasar por valor
- Pasar por referencia
Cuando se pasa un vector a una función, se crea una copia del vector. Esta nueva copia del vector se usa luego en la función y, por lo tanto, cualquier cambio realizado en el vector en la función no afecta el vector original.
Por ejemplo, podemos ver debajo del programa, los cambios realizados dentro de la función no se reflejan fuera porque la función tiene una copia.
Ejemplo (Pasar por valor):
CPP
// C++ program to demonstrate that when vectors // are passed to functions without &, a copy is // created. #include <bits/stdc++.h> using namespace std; // The vect here is a copy of vect in main() void func(vector<int> vect) { vect.push_back(30); } int main() { vector<int> vect; vect.push_back(10); vect.push_back(20); func(vect); // vect remains unchanged after function // call for (int i = 0; i < vect.size(); i++) cout << vect[i] << " "; return 0; }
10 20
Pasar por valor mantiene el vector original sin cambios y no modifica los valores originales del vector. Sin embargo, el estilo de paso anterior también puede llevar mucho tiempo en casos de vectores grandes. Por lo tanto, es una buena idea pasar por referencia.
Ejemplo (Pasar por referencia):
CPP
// C++ program to demonstrate how vectors // can be passed by reference. #include <bits/stdc++.h> using namespace std; // The vect is passed by reference and changes // made here reflect in main() void func(vector<int>& vect) { vect.push_back(30); } int main() { vector<int> vect; vect.push_back(10); vect.push_back(20); func(vect); for (int i = 0; i < vect.size(); i++) cout << vect[i] << " "; return 0; }
10 20 30
Pasar por referencia ahorra mucho tiempo y agiliza la implementación del código.
Nota: Si no queremos que una función modifique un vector, también podemos pasarla como una referencia constante .
CPP
// C++ program to demonstrate how vectors // can be passed by reference with modifications // restricted. #include<bits/stdc++.h> using namespace std; // The vect is passed by constant reference // and cannot be changed by this function. void func(const vector<int> &vect) { // vect.push_back(30); // Uncommenting this line would // below error // "prog.cpp: In function 'void func(const std::vector<int>&)': // prog.cpp:9:18: error: passing 'const std::vector<int>' // as 'this' argument discards qualifiers [-fpermissive]" for (int i = 0; i < vect.size(); i++) cout << vect[i] << " "; } int main() { vector<int> vect; vect.push_back(10); vect.push_back(20); func(vect); return 0; }
10 20
Este artículo es una contribución de Kartik . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA