Рубрики

std :: transform () в C ++ STL (выполнить операцию над всеми элементами)

Рассмотрим проблему добавления содержимого двух массивов в третий массив. Дано, что все массивы имеют одинаковый размер.

Ниже приводится простая программа на C ++ без transform ().

// C ++ код для добавления двух массивов
#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];

  

  // Код для добавления двух массивов

  for (int i=0; i<n; i++)

    res[i] = arr1[i] + arr2[i];

  

  for (int i=0; i<3; i++)

    cout << res[i] << " ";

}

Выход :

5 7 9

Используя функцию преобразования STL, мы можем добавить массивы в одну строку.

// Использование tansform () в STL для добавления двух массивов
#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];

  

  // однострочный код для добавления arr1 [] и arr2 [] и

  // сохранить результат в res []

  transform(arr1, arr1+n, arr2, res, plus<int>());

  

  for (int i=0; i<n; i++)

    cout << res[i] << " ";

}

Выход :

5 7 9


transform () в C ++ используется в двух формах:

  1. Унарная операция : применяет унарный оператор на входе для преобразования в выходной
    transform(Iterator inputBegin, Iterator inputEnd, 
             Iterator OutputBegin, unary_operation) 

    Ниже приведен пример C ++.

    // C ++ программа для демонстрации работы
    // преобразование с унарным оператором.
    #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]);

      

        // Применяем приращение ко всем элементам

        // arr [] и сохраняем измененные элементы

        // назад в arr []

        transform(arr, arr+n, arr, increment);

      

        for (int i=0; i<n; i++)

            cout << arr[i] << " ";

      

        return 0;

    }

    Выход :

    2 3 4 5 6 
  2. Двоичная операция : применяет двоичный оператор на входе для преобразования в выходной
    transform(Iterator inputBegin1, Iterator inputEnd1, 
             Iterator inputBegin2, Iterator OutputBegin, 
             binary_operation) 

    Вышеупомянутый пример для добавления двух массивов является примером преобразования с двоичной операцией.

Больше примеров:
Мы можем использовать преобразование для преобразования строки в верхний регистр (см. Это )

Мы также можем модифицировать приведенные выше примеры для векторов.

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

Связанная тема:
Функторы в C ++

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

std :: transform () в C ++ STL (выполнить операцию над всеми элементами)

0.00 (0%) 0 votes