transform函式的應用

2021-06-06 18:32:06 字數 2324 閱讀 4264

transform函式的作用是:將某操作應用於指定範圍的每個元素。transform函式有兩個過載版本:

transform(first,last,result,op);//first是容器的首迭代器,last為容器的末迭代器,result為存放結果的容器,op為要進行操作的一元函式物件或sturct、class。

transform(first1,last1,first2,result,binary_op);//first1是第乙個容器的首迭代器,last1為第乙個容器的末迭代器,first2為第二個容器的首迭代器,result為存放結果的容器,binary_op為要進行操作的二元函式物件或sturct、class。

注意:第二個過載版本必須要保證兩個容器的元素個數相等才行,否則會丟擲異常。

看乙個例子:利用transform函式將乙個給定的字串中的小寫字母改寫成大寫字母,並將結果儲存在乙個叫second的陣列裡,原字串內容不變。

我們只需要使用transform的第乙個過載函式,當然我們也可以使用for_each函式來完成再copy幾次就行了,現在來看一下**:

#include

#include

using namespace std;

char op(char ch)

int main()

再看乙個例子:給你兩個vector向量(元素個數相等),請你利用transform函式將兩個vector的每個元素相乘,並輸出相乘的結果。

**:#include

#include

#include

using namespace std;

void print(int &elem)

for(int i=0;i

sum.resize(n);

transform(a.begin(),a.end(),b.begin(),sum.begin(),op);

for_each(sum.begin(),sum.end(),print);

return 0; }

輸入: 5

1 2 3 4 5

5 4 3 2 1

輸出:5 8 9 8 5

再看乙個網上的例子:

#include

#include

#include

#include

using namespace std;

class print

} ;

int main() ;

vectorvec1(arr1, arr1 + sizeof arr1 / sizeof (int)) ;

vectorvec2(9, 0) ;

// transform(beg, end, dest, unaryop) ;

// 操作前:[beg,end)標示輸入序列.dest是目標迭代器.unaryop是一元函式物件.

// 操作後:對[beg,end)中每個元素應用unaryop操作並將結果複製到dest迭代器所在的容器中.

// 返回值:返回目標容器中被寫入的最後乙個位置的下乙個迭代器.

// 備註:

[dest,...)必須能夠儲存[beg,end)中的全部元素.否則將丟擲異常.

transform(vec1.begin(), vec1.end(), vec2.begin(), bind2nd(plus(), 1000)) ;

for_each(vec2.begin(), vec2.end(), print()) ;

// transform(beg, end, beg2, dest, binaryop) ;

// 操作前:[beg,end)標示輸入序列.[beg2,...)標示輸入序列.dest是目標迭代器..binaryop是二元函式物件.

// 操作後:[beg,end)序列中的元素依次作為二元操作的第乙個實參.

// [beg2,...)序列中的元素依次作為二元操作的第二個實參.

// 將運算結果依次複製到dest迭代器所在的容器中.

// 返回值:返回目標容器中被寫入的最後乙個元素的下乙個位置的迭代器.

// 備註:

[beg2,...)必須能夠儲存[beg,end)中的全部元素.

// [dest,...)必須能夠儲存[beg,end)中的全部元素.

// 否則將丟擲異常

vectorvec3(18, 1) ;

transform(vec1.begin(), vec1.end(), vec2.begin(), vec3.begin(), multiplies()) ;

for_each(vec3.begin(), vec3.end(), print()) ;

return 0 ; }

Transform 學習和應用

link transform 變換,是場景中最常打交道的類,用於控制物體的位移,旋轉,縮放等功能。transform class,inherits from component,ienumerable position,rotation and scale of an object.控制物體的位置,...

機械表小案例之transform的應用

這個小案例主要是對transform的應用。時鐘的3個表針分別是3個png,通過setinterval來讓轉動。時,分,秒的轉動角度分別是30,6,6度。首先,通過new date函式獲取當前時間,通過date.getseconds date.getminutes date.gethours 獲得秒...

transform基本轉換應用2D

最近在折騰transform,其實不想寫啥的,但看在忙活的一天多的份上就簡單寫一下額。ps 只作為記錄,語言表達能力有限 transform常用的幾個值 translate 偏移 scale 縮放 skew 拉伸 傾斜 rotate 旋轉 ps 這幾個值都比較好理解,只要記得用到的座標軸y軸是向下的...