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
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.
#incluirusando 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.