C++ algorithm头文件中transform用法
transform函数可以将指定的源目标复制到新目标中transform有两个版本:第一种(参数):源目标起始迭代器地址源目标结束迭代器地址输出迭代器地址自定义函数符(一元函数) transform(v1.begin(),v1.end(),v2.begin(),add); //将v1 复制到v2同时先执行add方法 将其改变后放入v2容器中int add1(in...
·
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() 将会替换掉原来的元素
即第二个版本的第四个参数也是一样的
更多推荐
已为社区贡献1条内容
所有评论(0)