• c++常用遍历算法for_each 与transform 安静点


    for_each

    功能描述:

    • 实现遍历容器

    函数原型:

    • for_each(iterator beg, iterator end, _func);

      // 遍历算法 遍历容器元素

      // beg 开始迭代器

      // end 结束迭代器

      // _func 函数或者函数对象

    示例:

     

    #include <algorithm>
    #include <vector>
    
    //普通函数
    void print01(int val) 
    {
        cout << val << " ";
    }
    //函数对象
    class print02 
    {
     public:
        void operator()(int val) 
        {
            cout << val << " ";
        }
    };
    
    //for_each算法基本用法
    void test01() {
    
        vector<int> v;
        for (int i = 0; i < 10; i++) 
        {
            v.push_back(i);
        }
    
        //遍历算法
        for_each(v.begin(), v.end(), print01);
        cout << endl;
    
        for_each(v.begin(), v.end(), print02());
        cout << endl;
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

    transform

    功能描述:

    • 搬运容器到另一个容器中

    函数原型:

    • transform(iterator beg1, iterator end1, iterator beg2, _func);

    //beg1 源容器开始迭代器

    //end1 源容器结束迭代器

    //beg2 目标容器开始迭代器

    //_func 函数或者函数对象

    示例:

     

    #include<vector>
    #include<algorithm>
    
    //常用遍历算法  搬运 transform
    
    class TransForm
    {
    public:
        int operator()(int val)
        {
            return val;
        }
    
    };
    
    class MyPrint
    {
    public:
        void operator()(int val)
        {
            cout << val << " ";
        }
    };
    
    void test01()
    {
        vector<int>v;
        for (int i = 0; i < 10; i++)
        {
            v.push_back(i);
        }
    
        vector<int>vTarget; //目标容器
    
        vTarget.resize(v.size()); // 目标容器需要提前开辟空间
    
        transform(v.begin(), v.end(), vTarget.begin(), TransForm());
    
        for_each(vTarget.begin(), vTarget.end(), MyPrint());
    }
    
    int main() {
    
        test01();
    
        system("pause");
    
        return 0;
    }

    总结: 搬运的目标容器必须要提前开辟空间,否则无法正常搬运

      

  • 相关阅读:
    文字溢出隐藏并以...展示
    定时器
    angular新建组件的组成部分
    angular五个常用语法
    element-ui 分页设置之低于10条显示完整分页页码
    new关键字执行过程
    js运用sort对json 数组进行排序
    正则验证积累
    jq监听
    gitHub命令大全
  • 原文地址:https://www.cnblogs.com/anjingdian/p/16389032.html
Copyright © 2020-2023  润新知