假设我有一个范围,我想计算每个元素的立方体总和,例如[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)
但这由于某种原因不起作用。
问题就出来了不可思议,但在我的回报,我只是乘以i并j用自己3次加入。
像往常一样,CppReference是您的朋友。
您应该将运行总和添加到新值的立方体中,而不是将运行总和和新值相加。
std::accumulate(first, last, 0, [](int sum, int value)
{ return sum + (value*value*value); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |