stl中的transform()註意其與for_each的不同點(有無返回值)
阿新 • • 發佈:2017-06-08
bind2nd n) oid highlight tlist _each pre stream gin
#include<iostream> using namespace std; #include"vector" #include"algorithm" #include"list" #include"functional" // void PrintV(vector <int > &temp) { for (vector<int>::iterator it = temp.begin(); it != temp.end(); it++) { cout << *it << " "; } cout << endl; } void Printlist(list <int > &temp) { for (list<int>::iterator it = temp.begin(); it != temp.end(); it++) { cout << *it << " "; } cout << endl; } int chen10(int &n) { //cout << n*10 << " "; return n * 10; } int main() { vector <int> v1; v1.push_back(1); v1.push_back(6); v1.push_back(3); v1.push_back(18); cout << "PrintV(v1) +++++> "; PrintV(v1); cout << endl; //假設op為transform最後一個參數。這點與 for_each區分,for_each不需要返回值的 //op:用一元函數對象op作為參數,執行其後返回一個結果值。 // 它可以是一個函數或對象內的類重載operator()。 //binary_op:用二元函數對象binary_op作為參數,執行其後返回一個結果值。 // 它可以是一個函數或對象內的類重載operator()。 transform(v1.begin(), v1.end(), v1.begin(), chen10); PrintV(v1); cout << endl; list<int> mylist; mylist.resize(v1.size()); transform(v1.begin(), v1.end(), mylist.begin(), chen10); Printlist(mylist); transform(v1.begin(), v1.end(), mylist.begin(), bind2nd(multiplies<int>(), 10 )); Printlist(mylist); system("pause"); }
stl中的transform()註意其與for_each的不同點(有無返回值)