Diferencia entre std::swap y std::vector::swap

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;
}
Producción: 

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;
}
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *