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

      

  • 相关阅读:
    文件上传-pubsec-文件上传大小限制
    编写 .gitignore 文件
    Git 创建点开头的文件和目录
    Git 克隆远程仓库到本地
    redis 在 windows 中的安装
    查看数据库字符集和排序规则
    centos 6 和centos 7 系统下vnc配置
    centos 6 下KVM 安装学习之旅
    Centos 下使用VLAN+Bridge 搭建KVM基础网络环境
    centos 6 KVM 网卡桥接配置
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6959303.html
Copyright © 2020-2023  润新知