STL accumulate上的C++ lambda函数机制

标签 c++ lambda

我正在学习新的 C++ 11 lambda 功能,这段代码究竟如何使用 lambda 计算数组( double )的乘积?

double product2 = accumulate(begin(doubles), end(doubles), 1.0,
    [](double partialresult, double d){return partialresult*d; });

我想了解变量 partialresult 和 d 的来源/去向。

最佳答案

std::accumulate 对 double 的特化,将有一个概念上类似于以下的实现(为简单起见,删除了模板参数语法):

double accumulate(
    iterator_type begin, iterator_type end,
    double initial, functor_type f)
{
    double partialResult = initial;
    while(begin != end)
        partialResult = f(partialResult, *begin++);
    return partialResult;
}

基本上,部分结果就是每一步累加的中间结果。 d 将是迭代器指向的值。

关于STL accumulate上的C++ lambda函数机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20837934/

相关文章:

c++ - 使用c + = expression和c = c + expression时输出中的std::string差异

c++ - QSystemSemaphore::acquire() 中止

c - 使用 GCC 语句表达式的匿名函数

C++0x Lambda 到 VS 2010 中的函数指针

c# - 如何在(linq 和 lambda)中使用 select with max,min 函数?

c++ - g++ 4.7 严格别名检查无效

c++ - Qt:槽返回值的含义?

c++ - 在字符串中搜索字符

c# - 从客户端向服务器发送 lambda 表达式

c++ - 函数指针、Functor 还是 Lambda?