相比
double average = CalculateAverage(values.begin(), values.end());
Run Code Online (Sandbox Code Playgroud)
同
double average = std::for_each(values.begin(), values.end(), CalculateAverage());
Run Code Online (Sandbox Code Playgroud)
使用函子而不是函数有什么好处?是不是第一个更容易阅读(甚至在添加实施之前)?
假设仿函数定义如下:
class CalculateAverage
{
private:
std::size_t num;
double sum;
public:
CalculateAverage() : num (0) , sum (0)
{
}
void operator () (double elem)
{
num++;
sum += elem;
}
operator double() const
{
return sum / num;
}
};
Run Code Online (Sandbox Code Playgroud)