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軸是向下的...