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() 將會替換掉原來的元素

即第二個版本的第四個參數也是一樣的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章