std::transform() en C++ STL (realizar una operación en todos los elementos)

Considere el problema de agregar contenidos de dos arreglos a un tercer arreglo. Se da que todas las arrays son del mismo tamaño.
El siguiente es un programa C++ simple sin transform().
 

CPP

// A C++ code to add two arrays
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
  int arr1[] = {1, 2, 3};
  int arr2[] = {4, 5, 6};
  int n = sizeof(arr1)/sizeof(arr1[0]);
  int res[n];
 
  // Code to add two arrays
  for (int i=0; i<n; i++)
    res[i] = arr1[i] + arr2[i];
 
  for (int i=0; i<3; i++)
    cout << res[i] << " ";
}

Producción : 

5 7 9

Usando la función de transformación de STL, podemos agregar arrays en una sola línea. 
 

C++

// Using transform() in STL to add two arrays
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
  int arr1[] = {1, 2, 3};
  int arr2[] = {4, 5, 6};
  int n = sizeof(arr1)/sizeof(arr1[0]);
  int res[n];
 
  // Single line code to add arr1[] and arr2[] and
  // store result in res[]
  transform(arr1, arr1+n, arr2, res, plus<int>());
 
  for (int i=0; i<n; i++)
    cout << res[i] << " ";
}

Producción : 

5 7 9

transform() en C++ se usa de dos formas: 
 

  1. Operación unaria : aplica un operador unario en la entrada para convertirla en salida 
transform(Iterator inputBegin, Iterator inputEnd, 
         Iterator OutputBegin, unary_operation) 
  1. El siguiente es un ejemplo de C++.
     

C++

// C++ program to demonstrate working of
// transform with unary operator.
#include <bits/stdc++.h>
using namespace std;
 
int increment(int x) {  return (x+1); }
 
int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr)/sizeof(arr[0]);
 
    // Apply increment to all elements of
    // arr[] and store the modified elements
    // back in arr[]
    transform(arr, arr+n, arr, increment);
 
    for (int i=0; i<n; i++)
        cout << arr[i] << " ";
 
    return 0;
}
  1. Producción : 
2 3 4 5 6 
 
  1. Operación binaria : aplica un operador binario en la entrada para convertir en salida 
transform(Iterator inputBegin1, Iterator inputEnd1, 
         Iterator inputBegin2, Iterator OutputBegin, 
         binary_operation) 
  1. El ejemplo mencionado anteriormente para agregar dos arrays es un ejemplo de transformación con operación binaria. 
     

Más ejemplos: 
podemos usar transform para convertir una string a mayúsculas (ver this
También podemos modificar los ejemplos anteriores para vectores. 

    
    // vect is a vector of integers.
    transform(vect.begin(), vect.end(), 
              vect.begin(), increment); 

Tema relacionado:  
Funtores en C++
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *