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() 將會替換掉原來的元素
即第二個版本的第四個參數也是一樣的