You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中使用std::partial_sum生成带前导0前缀和的最简洁方法?

实现方案

直接新建一个长度为原数组长度+1的结果数组,首位置0后将std::partial_sum的输出目标指向结果数组的第二个元素即可,全程不需要修改原数组的内容、类型和长度,符合你的要求。

示例代码

#include <iostream>
#include <vector>
#include <numeric>

int main() {
    // 原数组全程未做任何修改
    std::vector<int> a = {1, 2, 3, 4, 5};
    // 新建结果数组,长度为原数组+1,首元素默认初始化为0
    std::vector<int> prefix_sum(a.size() + 1, 0);
    // partial_sum的计算结果从prefix_sum的第2位开始写入
    std::partial_sum(a.begin(), a.end(), prefix_sum.begin() + 1);
    
    // 测试输出:prefix_sum 结果为 0 1 3 6 10 15
    for (int num : prefix_sum) {
        std::cout << num << " ";
    }
    return 0;
}

方案说明

  • 全程没有修改原数组a的任何内容、长度、类型,满足你提出的限制条件
  • 最终得到的prefix_sum数组符合常规前缀和使用逻辑:prefix_sum[i]代表原数组前i个元素的和,左闭右开区间[l, r)的元素和可以直接用prefix_sum[r] - prefix_sum[l]计算,完全匹配你提到的a[2]-a[0]查询前两个元素和的需求

内容的提问来源于stack exchange,提问作者Y.T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:48:03