在 C++ 中,有一个std::partial_sum
计算前缀和的函数。编码
#include <iostream>
#include <vector>
#include <iterator>
#include <numeric>
int main() {
std::vector<int> a = {1, 2, 3, 4, 5};
std::partial_sum(a.begin(), a.end(), a.begin());
return 0;
}
将覆盖 a to 1 3 6 10 15
,这是预期的。
但是,在大多数情况下,我想使用前缀总和,我希望0
前面有一个表示“空总和”,以便我可以a[2] - a[0]
用来查询前两个元素的总和。(这允许我使用一个简单的嵌套 for 循环来查找所有子数组的总和)。有没有办法用函数来实现它std::partial_sum
?我不知道这是否可能,因为输出大小将是输入大小 + 1。
注意:我不是在寻找a
预先改变内容或类型的方法。
如果大小a
是一个问题:
#include <iostream>
#include <vector>
#include <iterator>
#include <numeric>
int main() {
std::vector<int> a = {1, 2, 3, 4, 5, -1};
std::partial_sum(a.begin(), a.end() - 1, a.begin());
return 0;
}
像这样的东西也可以为我工作。