• STL谓词及lambda基本语法


    谓词

    • 普通函数或者仿函数返回值 bool类型
    • 一元 一个参数 二元 两个参数
    • 一元 查找 大于20的数字   find_if 返回迭代器
    • 二元 排序 

    谓词是指普通函数或重载的operator()返回值是bool类型的函数对象(仿函数)。如果operator接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断式。

    class GreaterThenFive
    {
    public:
        bool operator()(int num)
        {
            return num > 5;
        }
    
    };
    //一元谓词
    void test01()
    {
        vector<int> v;
        for (int i = 0; i < 10;i ++)
        {
            v.push_back(i);
        }
        
         vector<int>::iterator it =  find_if(v.begin(), v.end(), GreaterThenFive());
         if (it == v.end())
         {
             cout << "没有找到" << endl;
         }
         else
         {
             cout << "找到了: " << *it << endl;
         }
    }
    
    //二元谓词
    class MyCompare
    {
    public:
        bool operator()(int num1, int num2)
        {
            return num1 > num2;
        }
    };
    
    void test02()
    {
        vector<int> v;
        v.push_back(10);
        v.push_back(40);
        v.push_back(20);
        v.push_back(90);
        v.push_back(60);
    
        //默认从小到大
        sort(v.begin(), v.end());
        for (vector<int>::iterator it = v.begin(); it != v.end();it++)
        {
            cout << *it << " ";
        }
        cout << endl;
        cout << "----------------------------" << endl;
        //使用函数对象改变算法策略,排序从大到小
        sort(v.begin(), v.end(),MyCompare());
       //匿名函数 lambda表达式 [](){}; for_each(v.begin(),v.end(),[](int val){cout << val << " ";});
    cout << endl; }
  • 相关阅读:
    需求的有序化和方案的系统化
    产品 增长 口碑传播
    私域流量的价值 大悦城微信营销:14万微信会员哪来的
    产品创新阶段关口细则
    业务关键数据指标
    TOB 增长
    医美品零售门店分析
    数据赋能饮品轻食
    [已读]你不知道的JavaScript(上卷)
    [已读]移动web手册
  • 原文地址:https://www.cnblogs.com/yifengs/p/15194550.html
Copyright © 2020-2023  润新知