📌  相关文章
📜  C++ STL中的std :: transform()(对所有元素执行操作)

📅  最后修改于: 2021-05-30 13:02:06             🧑  作者: Mango

考虑将两个数组的内容添加到第三个数组中的问题。假定所有数组的大小相同。

以下是没有transform()的简单C++程序。

// A C++ code to add two arrays
#include 
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

输出 :

5 7 9

使用STL的转换函数,我们可以在单行中添加数组。

// Using tansform() in STL to add two arrays
#include 
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());
  
  for (int i=0; i

输出 :

5 7 9


C++中的transform()有两种形式使用:

  1. 一元运算:对输入应用一元运算运算符以转换为输出
    transform(Iterator inputBegin, Iterator inputEnd, 
             Iterator OutputBegin, unary_operation) 

    以下是C++示例。

    // C++ program to demonstrate working of
    // transform with unary operator.
    #include 
    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

    输出 :

    2 3 4 5 6 
  2. 二进制运算:对输入应用二进制运算符以转换为输出
    transform(Iterator inputBegin1, Iterator inputEnd1, 
             Iterator inputBegin2, Iterator OutputBegin, 
             binary_operation) 

    上面提到的用于添加两个数组的示例是使用二进制运算进行转换的示例。

更多示例:
我们可以使用transform将字符串转换为大写(请参阅此)

我们也可以修改上述示例中的向量。

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

相关主题:
C++中的函子

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”