zoukankan      html  css  js  c++  java
  • c++ for_each()与仿函数

    for_each有一个独门绝技,其他算法没有,那就是可以返回值来获取函数的状态

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    class MeanValue{
      private:
        long num;
        long sum;
      public:
        MeanValue():num(0),sum(0){}
        void operator() (int elem){
            num ++ ;
            sum += elem;
        }
        double value(){
            return static_cast<double>(sum)/static_cast<double>(num);
        }
    };
    
    
    int main(){
        vector<int> coll;
        for(int  i = 1;i <= 8; ++i){
            coll.push_back(i);
        }
    
        MeanValue mv = for_each(coll.begin(),coll.end(),MeanValue());   //注意
        cout<<"mean value:"<< mv.value()<<endl;
    }

     要让自定义仿函数也可以使用函数配接器,必须让自定义类继承binary_function,以支持一些型别成员

  • 相关阅读:
    ruby 类库组成
    ruby 数据类型Number
    ruby require的使用
    ruby $LOAD_PATH及类加载
    ruby编码说明
    RubyMine常用快捷键
    基础
    基础
    基础
    基础
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3252093.html
Copyright © 2011-2022 走看看