如何在 C++ 中使用 std::accummulate 计算总和立方体

use*_*332 1 c++ stl std range

假设我有一个范围,我想计算每个元素的立方体总和,例如[1,2,3]我想要的:

1 3 + 2 3 + 3 3 = 36

我将如何使用std::accummulate(),我必须编写自己的二进制函数来做到这一点?我有:

std::accummulate(iterator to beginning,
                 iterator to end of range,
                 0.0,
                 [](int i, int j) { return i*i*i + j*j*j; });
Run Code Online (Sandbox Code Playgroud)

但这由于某种原因不起作用。

问题就出来了不可思议,但在我的回报,我只是乘以ij用自己3次加入。

Mar*_*low 5

像往常一样,CppReference是您的朋友。

您应该将运行总和添加到新值的立方体中,而不是将运行总和和新值相加。

std::accumulate(first, last, 0, [](int sum, int value) 
                 { return sum + (value*value*value); });
Run Code Online (Sandbox Code Playgroud)