Intercambio estándar de C++

Intercambio Estandar De C



“Permutar es el acto de intercambiar dos o más cosas. Los datos entre dos variables en la programación se pueden cambiar. El intercambio de cosas entre dos personas es posible en la vida real. Los valores de dos objetos se pueden intercambiar utilizando la función de biblioteca estándar swap() en C++. Se ha colocado bajo el encabezado 'utilidad' en C11. La función swap() en C++ tiene una complejidad de N para arreglos porque cada elemento debe intercambiarse individualmente, mientras que la dificultad de la función para constantes es constante. La función swap() arroja una advertencia o un error si alguno de los elementos de la variable falla. Mire la firma de la función para std::swap() a continuación:

Sintaxis:

modelo < clase T > vacío intercambio ( T & variable_1 , T & variable_2 ) ;

Tanto el valor de la primera variable como el de la segunda variable, que almacenan valores, deben intercambiarse. La función simplemente cambia los valores de las variables; no tiene salida.”







Funcionamiento de la función swap() en C++

La función de intercambio se implementa en C++ usando las siguientes tres líneas.



Modelo vacío intercambio ( T & i , T & j ) {
T temperatura = estándar :: Muevete ( i ) ;
i = estándar :: Muevete ( j ) ;    
j = estándar :: Muevete ( temperatura ) ;
}

La sentencia “T temp = std::move(i)”; hace una copia del elemento “i” y lo duplica. Aquí, “i = std::move(j)”; desecha los elementos originales de 'i' y almacena la copia 'i' de 'j' en lugar de la 'j' original. La fórmula “j = std:: move(temp)”; guarde 'i' con un clon de temp, y elimine los contenidos idénticos de temp. Además, elimine la variable temporal después de que se complete la ejecución de la función swap().



Ejemplo 1: programa usando el método std::move para intercambiar

Como se demuestra a continuación, podemos intercambiar dos objetos usando la función std::move de C++11.





#incluir

#incluir

 

modelo
vacío intercambio ( T & a , T & b )
{
T temperatura = estándar :: Muevete ( a ) ;
a = estándar :: Muevete ( b ) ;
b = estándar :: Muevete ( temperatura ) ;
}
En t principal ( )
{
estándar :: vector lista = { 10 , 12 , 13 , 15 , 16 , 17 } ;
    En t i = 3 , j = 5 ;
intercambio ( lista [ i ] , lista [ j ] ) ;
    por ( En t i : lista ) {
estándar :: cout << i << ' ' ;
    }
    devolver 0 ; }

Tenemos una declaración de plantilla que tiene un objeto 'T'. Después de eso, hemos establecido la función como 'intercambio'. La función toma los dos parámetros &a y &b, de tipo “T”. Como resultado de que los argumentos T& a, T& b hacen referencia o almacenan la dirección de la variable pasada y se aplican directamente a ellos sin regresar, la función de intercambio (T& a, T& b) se denomina llamada por referencia.



Dentro del intercambio vacío, hemos aplicado el algoritmo de intercambio utilizando el método std::move. Luego, construimos el programa main's. Aquí, hemos declarado la variable 'lista' y la inicializamos con la lista de valores numéricos. Hemos establecido los valores de 'i' y 'j' para el intercambio. El valor numérico ubicado en el segundo índice fue reemplazado por el valor numérico en el quinto índice. Luego, llamamos a la función de intercambio y le pasamos los índices 'i' y 'j' para el intercambio. El bucle for se utiliza para imprimir la lista intercambiada.

La salida mostró la lista modificada. Puede observar que la nueva lista generada intercambió el valor de acuerdo con los índices especificados.

Ejemplo 2: programa usando el método std::swap para intercambiar

Utilizar el mecanismo std::swap que se encuentra en el encabezado de la utilidad (en C++11) es la solución habitual. Los valores de dos objetos se cambian para que funcione.

#incluir

#incluir

#incluir

 

En t principal ( )
{
estándar :: vectorarr = { 3 , 6 , 9 , 15 , 13 } ;
    En t i = 3 , j = 4 ;

estándar :: intercambio ( Arr [ i ] , Arr [ j ] ) ;

    por ( En t i : Arr ) {
estándar :: cout << i << ' ' ;
    }

    devolver 0 ;
}

Al importar el archivo de encabezado , podemos acceder a la función de intercambio en nuestro programa. Aquí, hemos incluido el archivo de encabezado con dos bibliotecas más importantes. Entonces, hemos establecido el método int main. Dentro del main del programa, hemos declarado el vector creando la variable 'arr'. La variable “arr” se inicializa con los cinco elementos del entero. Las posiciones del índice se asignan a la 'i' y la 'j' para el intercambio. Las variables 'i' y 'j' luego se pasan al método std::swap para el intercambio del valor del índice especificado. Con el ciclo for, hemos impreso las matrices intercambiadas.

La lista obtenida después de la operación de intercambio utilizando el método std::swap se muestra de la siguiente manera:

Ejemplo 3: programa usando el método std::iter_swap para intercambiar

El uso del algoritmo std::iter_swap, que aparece en el encabezado del algoritmo, es una opción adicional. La forma en que opera es cambiando los valores de los objetos a los que apuntan los iteradores provistos.

#incluir

#incluir

#include

#incluye

 

En t principal ( )
{
estándar :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
    En t i = 0 , j = 4 ;
    auto itr1 = estándar :: Siguiente ( una cosa. empezar ( ) , i ) ;
    auto itr2 = estándar :: Siguiente ( una cosa. empezar ( ) , j ) ;

estándar :: iter_swap ( itr1 , itr2 ) ;
    por ( En t i : una cosa ) {
estándar :: cout << i << ' ' ;
    }
    devolver 0 ;
}

Al método principal del programa, le hemos declarado una variable vectorial “vec” y le hemos asignado una lista vectorial de números. Luego, especificamos la posición del índice a la variable 'i' y 'j'. Se invoca el método std::iter_swap que toma iter1 e iter2 como argumento. El iter1 y el iter2 se declaran con la palabra clave auto y tienen la operación de iteración. El método de bucle for imprime los valores intercambiados de la matriz de vectores al ejecutarse.

El método std::iter_swap intercambió correctamente los valores de los vectores especificados.

Ejemplo 4: Programa de Uso Sin Variables Temporales a Intercambiar

Este ejemplo muestra una nueva forma de intercambiar números en código C++ sin el uso de variables temporales.

#incluir

usando el espacio de nombres estándar ;

En t principal ( )
{
    En t x1 = 2 , x2 = 12 ;
cout << 'Antes de cambiar'. << final ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << final ;

x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;

cout << ' \norte Después del intercambio'. << final ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << final ;

    devolver 0 ; }

Examinemos el funcionamiento de este programa. Aquí, hemos declarado x1 y x2, que inicialmente se establecen con el número, respectivamente. Luego, usando la fórmula x1 = x1+ x2, sumamos x1 y x2 y ponemos el resultado en x1. Esto indica que x1 es igual a 2 más 12. Por lo tanto, ahora es igual a 14. Luego, aplicamos la fórmula x2 = x1 – x2. Esto indica que x2 = 14 – 12. Por lo tanto, x2 ahora es igual a 2. Una vez más, aplicamos la fórmula x1 = x1 – x2. Esto indica que x1 = 14 – 2. Por lo tanto, x1 = 12 al final. Como resultado, los números han sido cambiados.

El número intercambiado antes y después se muestra en la siguiente pantalla de aviso.

Conclusión

Aquí, repasamos una descripción completa de swap() en C++, su uso y algunos ejemplos que muestran cómo funciona. Mediante el uso de la función std:: swap(), se pueden cambiar los valores de dos variables. El STL de C++ incluye una función integrada llamada std::swap(). La función swap(T& variable 1, T& variable 2) llama por referencia, y C++ sobrecarga swap() según el tipo de variables de datos también se explican en este tutorial.