我有以下计算一个数组的“部分总和”的程序。例如,如果我输入连续整数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;
}
我的问题是,我想有一种方法可以做到这一点,而不需要将值复制到另一个数组中。到目前为止,我还没有想出如何。正如你所看到的,在上面的代码中,我有一个名为copy
的整数数组,我把这个数组放到它的标记中。我知道这是可以使用std::vector
和partial_sum
做,但我宁可不使用它,因为它不允许我完全理解这是如何工作。
任何想法?谢谢。
谢谢。完美的作品! – 2013-04-25 22:13:53