zoukankan      html  css  js  c++  java
  • stl(18)内置算法for_each transform

    1.for_each用法,头文件#include <algorithm>

    该算法用于获取容器种的每一个元素,然后做统一的操作。

    #include <iostream>
    #include <vector>
    #include <algorithm>

    void myPrint(int i ){
        std::cout<<i<<std::endl;//这里可以做任意的数据处理
    }
    class MyPrint{
    public:
        void operator()(int i){
            std::cout<<i<<std::endl;//这里可以做任意的数据处理
        }
    };
    int main(){
        std::vector<int> vec;
        for(int i = 0;i<10;i++){
            vec.push_back(i);
        }
        for_each(vec.begin(),vec.end(),myPrint);//回调函数版本
        for_each(vec.begin(),vec.end(),MyPrint());//仿函数版本,MyPrint()相当于传入了一个MyPrint类的匿名对象
    }
     
    2.transform用法,头文件#include <algorithm>
    用于将一个容器中的数据拷贝到另外一个容器,拷贝过程中可以对原容器的每个数据做一个处理后在拷贝(如都加上1)
    #include <iostream>
    #include <vector>
    #include <algorithm>
    class MyTransform{
        public:
        int operator()(int i){
            return i;//这里可以对原数据进行处理,如果直接拷贝则返回原数据即可
        }
    };
    int myTransform(int i){
        return i ;//这里可以对原数据进行处理,如果直接拷贝则返回原数据即可
    }
    void myPrint(int i ){
        std::cout<<i<<std::endl;
    }
    int main(){
        std::vector<int> vec;
        for(int i = 0;i<10;i++){
            vec.push_back(i);
        }
        std::vector<int> vec1;
        vec1.resize(vec.size());//这里要保证vec1种有足够的空间放下拷贝过来的数据
        //transform(vec.begin(),vec.end(),vec1.begin(),myTransform);//回调函数版本
        transform(vec.begin(),vec.end(),vec1.begin(),MyTransform());//仿函数版本
        for_each(vec1.begin(),vec1.end(),myPrint);
    }
     
  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/maycpou/p/14458794.html
Copyright © 2011-2022 走看看