• 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);
    }
     
  • 相关阅读:
    混淆矩阵求解(多分类与单分类)
    pytorch权重转wts格式,用于tensorrt权重加载
    触摸按键控制器TTP229BSF使用心得[原创cnblogs.com/helesheng]
    腾讯云主机配置FTP INnoVation
    【转】PV操作,看完了进程同步与互斥机制,我终于彻底理解了 PV 操作
    C++使用正则时碰到一个奇怪的问题
    DLL中使用vector的问题
    Docker镜像操作 测试
    剖析虚幻渲染体系(16) 图形驱动的秘密
    20225前端渡劫汇总
  • 原文地址:https://www.cnblogs.com/maycpou/p/14458794.html
Copyright © 2020-2023  润新知