标签:
有三种办法可以从“运用了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());
标签:
原文地址:http://www.cnblogs.com/ph829/p/5151931.html