zoukankan      html  css  js  c++  java
  • 仿函数

    ceres里面用到仿函数,故单独测试一下用法

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    class LessThenLenFunctor{
    public:
        bool operator()(const string& str){
            return str.length() < len;
        }
    
        //构造函数
        LessThenLenFunctor(int l):len(l){};
    
    private:
        int len;
    };
    
    int main()
    {
        vector<string> sVec{"aegew", "ssftat", "12"};
        int cnt = count_if(sVec.begin(), sVec.end(),LessThenLenFunctor(6));
        cout << cnt << endl;
    }

    可以让LessThenLenFunctor类作为一个函数被使用,其中类的成员变量作为这个函数的参数,具有较大的灵活性。

    参考:https://blog.csdn.net/codedoctor/article/details/79654690

    另外,也可以通过lamda(匿名函数)来实现相同的功能

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    class LessThenLenFunctor{
    public:
        bool operator()(const string& str){
            return str.length() < len;
        }
    
        //构造函数
        LessThenLenFunctor(int l):len(l){};
    
    private:
        int len;
    };
    
    int main()
    {
        vector<string> sVec{"aegew", "ssftat", "12"};
        int x = 6;
       // int cnt = count_if(sVec.begin(), sVec.end(),LessThenLenFunctor(6));
       int cnt = count_if(sVec.begin(), sVec.end(), [x](string str){return str.length() < x;});
        cout << cnt << endl;
    }

     关于lamda的使用,https://blog.csdn.net/bajianxiaofendui/article/details/86583612,这里讲的比较清楚,自己也可以验证一下。

  • 相关阅读:
    923c C. Perfect Security
    hdu ACM Steps Section 1 花式A+B 输入输出格式
    我回来了
    POJ–2104 K-th Number
    bzoj1009: [HNOI2008]GT考试
    bzoj1875: [SDOI2009]HH去散步
    1898: [Zjoi2005]Swamp 沼泽鳄鱼
    Hadoop
    程序员的自我修养
    Effective C++笔记
  • 原文地址:https://www.cnblogs.com/havain/p/15506892.html
Copyright © 2011-2022 走看看