El std::swap es una función general utilizada para intercambiar los valores dados, mientras que el std::vector::swap es una función especializada que puede intercambiar todo el contenido de dos contenedores de vectores diferentes.
A continuación se muestran algunas de las principales diferencias clave entre std::swap y std::vector::swap,
estándar::intercambiar | estándar::vector::intercambio |
---|---|
El std::swap() es una función incorporada en C++ STL que intercambia el valor de dos variables cualesquiera que se le pasan como parámetros. | La función std::vector::swap() se usa para intercambiar todo el contenido de un vector con otro vector del mismo tipo. |
Si la función std::swap() se usa para intercambiar dos vectores A y B, llamará al algoritmo std::swap especializado para std::vector que a su vez llama a A.swap(B) e intercambia los contenidos. | La función std::vector::swap intercambia el contenido de un vector con otro. Intercambia las direcciones (es decir, los contenedores intercambian referencias a sus datos) de dos vectores en lugar de intercambiar cada elemento uno por uno, lo que se hace en tiempo constante O(1). |
Las sobrecargas de std::swap para adaptadores de contenedores se introdujeron en C++11. Las versiones anteriores de C++ requerirán una complejidad de tiempo lineal para intercambiar vectores | La función std::vector::swap siempre intercambiará el contenido del vector en tiempo constante. |
En la práctica, ambas funciones intercambiarán los contenidos de los vectores en tiempo O(1) y darán el mismo rendimiento. Por consistencia, puede ser mejor usar el std::swap.
Programa 1 : Para ilustrar el intercambio de dos vectores usando std::swap().
CPP
// CPP program to illustrate swapping // of two vectors using std::swap() #include <bits/stdc++.h> using namespace std; int main() { vector<int> v1 = { 1, 2, 3 }; vector<int> v2 = { 4, 5, 6 }; // swapping the above two vectors // by traversing and swapping each element for (int i = 0; i < 3; i++) { swap(v1[i], v2[i]); } // print vector v1 cout << "Vector v1 = "; for (int i = 0; i < 3; i++) { cout << v1[i] << " "; } // print vector v2 cout << "\nVector v2 = "; for (int i = 0; i < 3; i++) { cout << v2[i] << " "; } return 0; }
Vector v1 = 4 5 6 Vector v2 = 1 2 3
Programa 2 : Para ilustrar el intercambio de dos vectores usando std::vector::swap().
CPP
// CPP program to illustrate swapping // of two vectors using std::vector::swap() #include <bits/stdc++.h> using namespace std; int main() { vector<int> v1 = { 1, 2, 3 }; vector<int> v2 = { 4, 5, 6 }; // swapping the above two vectors // using std::vector::swap v1.swap(v2); // print vector v1 cout << "Vector v1 = "; for (int i = 0; i < 3; i++) { cout << v1[i] << " "; } // print vector v2 cout << "\nVector v2 = "; for (int i = 0; i < 3; i++) { cout << v2[i] << " "; } return 0; }
Vector v1 = 4 5 6 Vector v2 = 1 2 3
Publicación traducida automáticamente
Artículo escrito por Gautam Karakoti y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA