Transformación de C ++ STD

Transformación de C ++ STD
Std :: la función de transformación existe en C ++ STL. Debemos abarcar el archivo de encabezado para utilizar esta función. Este método se utiliza para llevar a cabo una operación en todos los componentes. Aplica las operaciones a uno o más componentes de la matriz en secuencia y guarda la salida en la matriz resultante. Este enfoque funciona de dos maneras. Estos son:

Operación unary: Esto se aplica a cada elemento de la serie de entrada, y la salida se almacena en otra matriz.

Operación binaria: Esta operación se aplica a cada elemento de la primera serie de entrada y al componente correspondiente de la segunda serie de entrada. Al igual que la operación unaria, el resultado también se guarda en la matriz de salida.

Ni la operación unaria ni la operación binaria cambian directamente el componente pasado como parámetro. Si la salida especifica la misma serie, el algoritmo la altera indirectamente por el algoritmo. Discutamos la función std :: transformar y sus modos en detalle.

Operación unaria:

Std :: transform relata la función especificada con un rango y guarda la salida en otro rango. Esta técnica ejecuta una operación unaria en los componentes de la serie (matriz, matriz+12) y luego guarda la salida de la serie que comienza con el resultado.

El programa posterior muestra cómo realizar operaciones unarias en una matriz. La función transform () recibe un puntero a las posiciones iniciales y finales de una matriz y la posición inicial de la matriz resultante.

#incluir
#incluir
usando el espacio de nombres STD;
int square (int m)
regresar m*m;

int main (int lmn, char ** pqr)
int Array [12] = 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26;
resultado int [12];
transformar (matriz, matriz+12, resultado, cuadrado);
para (int j = 0; j<12; j++)
cout <

Al incluir las bibliotecas, vamos a comenzar el programa. El archivo de encabezado # incluye es para fines de entrada y salida. Por lo tanto, el archivo de encabezado # incluye se usa para la función transform (). Definimos el entero de tipo de datos a la operación unaria. Además, definimos un tipo de datos enteros a su variable 'M'.

Además, definimos la función cuadrada tomando el cuadrado de la variable. En el cuerpo principal, declaramos la matriz. Tomamos 12 números pares en la matriz. El tipo de datos de la matriz de entrada y la matriz resultante es similar. La salida se guarda en una nueva matriz. Posteriormente, aplicamos la función Transform (). Esta función iteradora en las posiciones de inicio y final de una serie. La serie utiliza (matriz, matriz+12), que incluye todos los componentes de la matriz de entrada. También contiene el componente al que apunta la matriz.

Aquí la matriz resultante es un iterador de salida, e itera al inicio de la serie donde se almacena la salida. La función unaria toma un componente de la categoría señalado a la matriz como argumento y luego devolvió un valor que la matriz resultante puede alterar. La operación unaria se aplica a la serie definida en (matriz, matriz+12). Esto aplica un método a cada componente de una serie. Por fin, usamos para bucle. Cada elemento se imprime en una nueva línea.

Operación binaria:

Esta técnica lleva a cabo la operación binaria en los componentes de la serie (primer elemento, último elemento) con el componente presente en la segunda posición de la serie. Ahorra el resultado en la serie, comenzando con el resultado. La transform () aplica una función que toma dos componentes y recibe dos parámetros de la serie de entrada para cada par de componentes. En este programa, ejecutamos operaciones binarias en los datos especificados. Si es necesario agregar componentes de dos matrices, utilizamos el método del operador binario.

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int Operator_Increment (int k, int l)
return k+l;

int main ()
int a = 8;
int inp_arr1 [] = 4, 7, 12, 36, 75, 23, 48, 69;
int inp_arr2 [] = 2, 15, 6, 95, 8, 73, 4, 80;
int otp_arr [a];
std :: cout <<"First array:";
para (int k = 0; kcout <<" <
cout <<'\n';
std :: cout <<"Second array:";
para (int k = 0; kcout <<" <
cout <<'\n';
std :: transform (inp_arr1, inp_arr1+a, inp_arr2, otp_arr, operator_increment);
std :: cout <<"Resultant array:";
para (int k = 0; k<8; k++)
cout <<" << otp_arr[k];

cout <<'\n';
regresar 0;

En este caso, integramos un nuevo archivo de encabezado que se utiliza para std :: transformar y otro archivo de encabezado #include se usa para std :: vector. Ahora aplicamos la función binaria por la función de transformación. Declaramos dos variables 'K' y 'L' aquí, y devuelve la adición de la variable 'K' a la variable 'L'. Además, definimos dos matrices diferentes. Hay 8 elementos en cada matriz. Y para representar esto, usamos la variable 'a'.

El tipo de datos de las matrices es un entero. La salida se almacena en una nueva matriz representada por 'OTP_ARR'. Queremos imprimir el texto 'Primera matriz'; Por lo tanto, usamos la función Cout. Solicitamos el bucle para la primera matriz ingresada. Por esto, obtenemos los elementos de la primera matriz. Aplicamos el personaje de Newline '\ n'.

A continuación, nuevamente usamos un bucle for para obtener la segunda matriz. La parte principal del programa es aplicar la función de transformación para estas matrices. Esta función toma el primer y último elemento de la primera matriz, el primer elemento de la segunda matriz y el primer elemento de la matriz resultante. Entonces la función binaria se aplica a dos matrices. El método std :: transform () aplica un operador binario a cada componente de la gama y guarda el valor de retorno. De la misma manera, obtenemos la matriz resultante. También solicitamos bucle para la matriz resultante.

Esta función también obtiene el comienzo de la matriz de salida y un puntero a la función binaria, que se aplica a las dos matrices definidas. La función binaria acepta dos componentes (uno de cada una de las dos series, respectivamente) como argumentos. Y devuelve una matriz que se transforma en el tipo de datos de OTP_ARR.

Adición de dos vectores:

Podemos usar la función STD :: Transform para que la serie de destino sea similar a la serie de entrada y realizar una alteración en el lugar. El ejemplo siguiente demuestra cómo utilizar traducciones binarias.

#incluir
#incluir
#incluir
#incluir
int OP_Incrase (int j) return ++ j;
int main ()
std :: vectora B C;
std :: vectorxyz;
para (int j = 1; j<8; j++)
a B C.push_back (j*20);
xyz.Dimensionar (ABC.tamaño());
std :: transform (ABC.begin (), ABC.end (), xyz.begin (), op_incrase);
std :: transform (ABC.begin (), ABC.end (), xyz.begin (), ABC.begin (), std :: plus());
std :: cout <<"Output";
para (std :: vector:: iterator it = ABC.comenzar(); él!= ABC.fin(); ++ it)
std :: cout <<" <<*it;
std :: cout <<'\n';
regresar 0;

Cuando comience el programa, primero las bibliotecas se integrarán. #InClude Biblioteca se aplica a la función STD :: Transform. #include se aplica a la función std :: vector. #include relata el método std :: plus. La función op_incrase () se aplica para las conversiones para incrementar la valoración de los parámetros.

Integramos dos vectores, y sus tipos de datos son similares. Después de declarar para bucle, aplicamos la función std :: transformación. Declaramos 8 elementos en For Loop. En la función transform () la serie utilizada es (ABC.comenzar, ABC.final), que incluye todos los componentes entre ABC.Begin y ABC.fin. Aquí xyz.BEGIN itera a la ubicación de inicio de la segunda serie. Std :: plus () es una función incorporada y se utiliza en una conversión binaria para agregar dos vectores. El resultado del código mencionado anteriormente se ve así:

Conclusión:

Este artículo ha explicado la función STD :: Transform. La función se utiliza de dos maneras. Una función unary toma solo un componente como argumento y devuelve un valor. Una función binaria que toma dos componentes (uno de cada una de las dos series) como argumentos, y luego devuelve un valor resultante. La operación binaria siempre se aplica a parejas de componentes en dos rangos. Relata la función especificada con una serie y guarda la salida en otra serie.