• 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");
    }
    

      

  • 相关阅读:
    圆珠笔芯为什么那么细
    2017第45周二
    浅谈XXE攻击
    谈谈ssrf
    htop简介
    关闭火狐定期向“http://detectportal.firefox.com/”发包
    linux登录用户(终端)间的通信
    linux下ftp、telnet的安装和使用
    深入解析hostname
    supervisor启动sqlmapapi失败 sqlmapapi: ERROR (file is not executable)
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6959303.html
Copyright © 2020-2023  润新知