标签:for_each return iter oid algorithm pac bind2nd 区分 resize
#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的不同点(有无返回值)
标签:for_each return iter oid algorithm pac bind2nd 区分 resize
原文地址:http://www.cnblogs.com/xiaochige/p/6959303.html