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);
    }
     
  • 相关阅读:
    umeng社交分享最新版5.0的跨进程使用崩溃的问题及解法-Android
    AlertDialog禁止返回键
    一个男人想经商,不读 100本商人自传,怎么会了解商人的思维状态
    Android中使用Gson解析JSON数据的两种方法
    DevExpress gridControl控件动态绑定列 zt
    获得WCF Client端的本地端口 z
    log4net.dll配置以及在项目中应用 zt
    系统交易策略 hylt
    判斷作業系統為 64bit 或 32bit z
    路徑 z
  • 原文地址:https://www.cnblogs.com/maycpou/p/14458794.html
Copyright © 2011-2022 走看看