如何避免将值复制到单独的数组?

Me *_*d I 3 c++

我有以下程序来计算数组的"部分和".例如,如果我1, 1, 1, 1通过std::cin我的程序输入连续的整数将结果计算为数组1, 2, 3, 4.

#include <iostream>

int main()
{
    int orig[10], copy[10];
    std::cout << "please enter 10 numbers:" << std::endl;

    for (int i = 0; i < 10; i++)
    {
        std::cin >> orig[i];
    }

    for (int i = 0; i < 10; ++i)
    {
        int sum = 0;
        for (int k = i; k >= 0; --k)
        {
            sum += orig[k];
        }
        copy[i] = sum;
    }

    std::cout << "the ascending order is:\n" << endl;
    for (int i = 0; i < 10; ++i)
        std::cout << copy[i] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我希望有一种方法可以做到这一点,而无需将值复制到另一个数组.到目前为止,我还没弄清楚如何.正如您所看到的,在上面的代码中,我有一个名为copyinto 的整数数组,我将总和放入其中.我知道这可以使用std::vector,partial_sum但我宁愿不使用它,因为它不允许我完全理解这是如何工作的.

有任何想法吗?谢谢.

Jos*_*eld 5

您不需要两个嵌套for循环.移动的初始化sum出的for环来跟踪的sum,你遍历orig.origsum你随便简单地覆盖值.

在伪代码中:

sum = 0
for each index i in array:
  sum += array[i]
  array[i] = sum
Run Code Online (Sandbox Code Playgroud)