C++ algorithm头文件中transform用法

transform函数可以将指定的源目标复制到新目标中

transform有两个版本:

第一种(参数):

  • 源目标起始迭代器地址
  • 源目标结束迭代器地址
  • 输出迭代器地址
  • 自定义函数符(一元函数)

 transform(v1.begin(),v1.end(),v2.begin(),add); //将v1 复制到v2同时先执行add方法 将其改变后放入v2容器中

int add1(int x)
{
    int b = x * 10;
    return b;
}
vector<int>v1 = { 1,2,3,4,5 };
vector<int>v2(5);
transform(v1.begin(), v1.end(), v2.begin(), add1);
for (int x : v2)
	cout << x << " ";

运行结果:

 第二种(参数):

  • 源目标起始
  • 源目标结束
  • 新目标起始地址
  • 输出地址起始地址
  • 自定义的二元函数

  transform(v1.begin(),v1.end(),v2.begin(),v3.begin(),mean);//他们的长度必须是一样的。mean表示平均数,表示将v1和v2的各个元素计算出的平均数放入v3的容器中。

double mean(double x, double y)
{
	return (x + y) / 2;
}

vector<double>v1 = { 1.0,2.0,3.0,4.0,5.0 };
vector<double>v2 = { 6.0,7.0,8.0,9.0,10.0 };
vector<double>v3(5);
for (double x : v3)
    cout << x << " ";
cout << endl;
transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), mean);
for (double x : v3)
	cout << x << " ";

 执行结果:

 如果第一个版本的第三个参数是源数组地址begin() 将会替换掉原来的元素

即第二个版本的第四个参数也是一样的

猜你喜欢

转载自blog.csdn.net/z1455841095/article/details/82773384