首页 > 代码库 > stl中的transform()注意其与for_each的不同点(有无返回值)
stl中的transform()注意其与for_each的不同点(有无返回值)
#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的不同点(有无返回值)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。