C++ transform
6618 ワード
transform関数の役割は、指定した範囲の各要素に操作を適用することです.transform関数には2つのリロードバージョンがあります:transform(first,last,result,op);//firstはコンテナの最初の反復器であり、lastはコンテナの最後の反復器であり、resultは結果を格納するコンテナであり、opは操作する一元関数オブジェクトまたはsturct、classである.transform(first1,last1,first2,result,binary_op);//first 1は第1の容器の最初の反復器であり、last 1は第1の容器の最後の反復器であり、first 2は第2の容器の最初の反復器であり、resultは結果を格納する容器であり、binary_opは、操作する二元関数オブジェクトまたはsturct、classです.注:2番目のリロード・バージョンでは、2つのコンテナの要素の数が等しいことを保証する必要があります.そうしないと、例外が放出されます.一例を見てください.transform関数を使用して、与えられた文字列の小文字を大文字に書き換え、結果をsecondという配列に保存します.元の文字列の内容は変わりません.transformの最初のリロード関数を使用するだけで、もちろんfor_も使用できます.each関数は、copyを何回か完了すればいいので、コードを見てみましょう.
もう1つの例を見てください.2つのvectorベクトル(要素の個数が等しい)をあげます.transform関数を使用して2つのvectorの各要素を乗算し、乗算結果を出力してください.
コード:
foreachの使い方
転載先:https://www.cnblogs.com/balingybj/p/4678880.html
1 #include
2 #include
3 using namespace std;
4 char op(char ch)
5 {
6
7 if(ch>='A'&&ch<='Z')
8 return ch+32;
9 else
10 return ch;
11 }
12 int main()
13 {
14 string first,second;
15 cin>>first;
16 second.resize(first.size());
17 transform(first.begin(),first.end(),second.begin(),op);
18 cout<endl;
19 return 0;
20 }
もう1つの例を見てください.2つのvectorベクトル(要素の個数が等しい)をあげます.transform関数を使用して2つのvectorの各要素を乗算し、乗算結果を出力してください.
コード:
foreachの使い方
1 #include
2 #include
3 #include
4 using namespace std;
5 void print(int &elem){cout<" ";}
6 int op(int a,int b){return a*b;}
7 int main()
8 {
9 vector <int> A,B,SUM;
10 int n;
11 cin>>n;
12 for(int i=0;i)
13 {
14 int t;
15 cin>>t;
16 A.push_back(t);
17 }
18 for(int i=0;i)
19 {
20 int t;
21 cin>>t;
22 B.push_back(t);
23 }
24 SUM.resize(n);
25 transform(A.begin(),A.end(),B.begin(),SUM.begin(),op);
26 for_each(SUM.begin(),SUM.end(),print);
27 return 0;
28 }
転載先:https://www.cnblogs.com/balingybj/p/4678880.html