C ++ STD Swap

C ++ STD Swap
“El intercambio 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 debajo del encabezado de "utilidad" en C11. La función swap () en c ++ tiene una complejidad de n para matrices porque cada elemento debe intercambiarse individualmente, mientras que la dificultad de la función para las constantes es constante. La función swap () lanza una advertencia o error si alguno de los elementos variables falla. Mire la firma de la función para std :: swap () a continuación:

Sintaxis:

plantilla < class T > Swap void (T & Variable_1, T & Variable_2);

Tanto el valor de la primera variable como la segunda variable, los cuales los valores del almacén, deben intercambiarse. La función simplemente cambia los valores de las variables; no tiene salida."

Función de trabajo de swap () en c++

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

Plantilla void swap (t & i, t & j)
T temp = std :: Move (i);
i = std :: mover (j);
j = std :: Move (temp);

La declaración "t temp = std :: Move (i)"; Hace una copia del elemento "I" y la duplica. Aquí, "i = std :: mover (j)"; Descarte 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)"; Guardar "i" con un clon de temperatura y eliminar el contenido idéntico de la temperatura. Además, elimine la variable TEMP después de que se complete la ejecución de la función swap ().

Ejemplo 1: Programa usando el método STD :: Mover para intercambiar

Como se demuestra a continuación, podemos intercambiar dos objetos utilizando la función C ++ 11 Std :: Move.

#incluir
#incluir
plantilla
Swap nulo (T&A, T&B)

T temp = std :: mover (a);
a = std :: mover (b);
b = std :: mover (temp);

int main ()

std :: vector list = 10, 12, 13, 15, 16, 17;
int i = 3, j = 5;
intercambio (lista [i], lista [j]);
para (int i: list)
std :: cout<
regresar 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, del tipo "t". Como resultado de los argumentos T&A, T&B referenciando o almacenando la dirección de la variable aprobada y aplicando directamente a ellos sin devolver, la función Swap (T&A, T&B) se llama llamada por referencia.

Dentro del intercambio vacío, hemos aplicado el algoritmo de intercambio usando el método STD :: Move. Luego, construimos el programa principal. Aquí, hemos declarado la variable "lista" y la hemos inicializado con la lista de valores numéricos. Hemos establecido los valores para "I" y "J" para intercambiar. El valor numérico ubicado en el segundo índice se reemplazó con 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 intercambiar. El bucle for se utiliza para imprimir la lista intercambiada.

La salida mostró la lista modificada. Puede observar la nueva lista generada cambió 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 utilidad (en C ++ 11) es la solución habitual. Los valores de dos objetos se cambian para que funcione.

#incluir
#incluir
#incluir
int main ()

std :: vectorarr = 3, 6, 9, 15, 13;
int i = 3, j = 4;
std :: swap (arr [i], arr [j]);
para (int i: arr)
std :: cout<
regresar 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. Luego, hemos establecido el método principal int principal. Dentro del programa principal del programa, hemos declarado el vector creando la variable "ARR."La variable" arr "se inicializa con los cinco elementos del entero. Las posiciones de índice se asignan a "I" y "J" para intercambiar. Las variables "i" y "j" se pasan al método std :: swap para el intercambio del valor del índice especificado. Con el bucle 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

Uso del algoritmo std :: iter_swap, que se enumera en el encabezado para el algoritmo, es una opción adicional. La forma en que funciona es cambiando los valores de los objetos a los que apuntan los iteradores proporcionados.

#incluir
#incluir
#incluir
#incluir
int main ()

std :: vectorVec = 64, 61, 62, 63, 60;
int i = 0, j = 4;
auto itr1 = std :: next (vec.begin (), i);
auto itr2 = std :: next (vec.begin (), j);
std :: iter_swap (ITR1, ITR2);
para (int i: vec)
std :: cout<
regresar 0;

Al método principal del programa, hemos declarado una variable vectorial "VEC" y le ha asignado una lista vectorial de números. Luego, especificamos la posición de índice a la variable "I" y "J". Se invoca el método std :: iter_swap que toma el iter1 y iter2 como argumento. ITER1 e ITER2 se declaran con la palabra clave automática y tienen la operación de iteración. El método For Loop imprime los valores intercambiados de la matriz vectorial tras la ejecución.

El método std :: iter_swap cambió con éxito los valores de los vectores especificados.

Ejemplo 4: programa de uso sin variables temporales para intercambiar

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

#incluir
usando el espacio de nombres STD;
int main ()

int x1 = 2, x2 = 12;
cout<< "Before swapping." <cout<< "x1 = " << x1 << ", x2 = " << x2 <x1 = x1 + x2;
x2 = x1 - x2;
x1 = x1 * x2;
cout<< "\nAfter swapping." <cout<< "x1 = " << x1 << ", x2 = " << x2 <regresar 0;

Examinemos la operación 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, agregamos 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 se han cambiado.

El número cambiado 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. Al usar la función std :: swap (), se pueden cambiar los valores de dos variables. El C ++ STL incluye una función incorporada llamada std :: swap (). Las llamadas de función Swap (T & Variable 1, T & Variable 2) por referencia, y el Swap () de C ++ Swap () dependiendo del tipo de variables de datos también se explican en este tutorial.