zoukankan      html  css  js  c++  java
  • for_each()的返回值

    有三种办法可以从“运用了function object”的算法中获取“结果”或“反馈”:

    1、在外部持有状态,并让function object指向它;

    2、以by reference方式传递function object;

    3、利用for_each()算法的返回值

    for_each()有一个其他算法都没有的绝技,可以传回其function object

    class MeanValue {
      private:
        long num;    // number of elements
        long sum;    // sum of all element values
      public:
        // constructor
        MeanValue () : num(0), sum(0) {
        }
    
        // "function call"
        // - process one more element of the sequence
        void operator() (int elem) {
            ++num;          // increment count
            sum += elem;    // add value
        }
    
        // return mean value
        double value () {
            return static_cast<double>(sum) / static_cast<double>(num);
        }
    };
    
    int main()
    {
        vector<int> coll = { 1, 2, 3, 4, 5, 6, 7, 8 };
    
        // process and print mean value
        MeanValue mv = for_each (coll.begin(), coll.end(),  // range
                                 MeanValue());              // operation
        cout << "mean value: " << mv.value() << endl;
    }
    其中,MeanValue mv = for_each (coll.begin(), coll.end(),  // range
                                 MeanValue()); 
  • 相关阅读:
    Best Time to Buy and Sell Stock II
    Subsets II
    Subsets I
    Combinations
    Permutation Sequence
    Next Permutation
    Anagrams
    Combination-Sum II
    Combination-Sum I
    Permutations II
  • 原文地址:https://www.cnblogs.com/ph829/p/5151931.html
Copyright © 2011-2022 走看看