如何计算 C++ 中双精度向量的累积和?

Posted

技术标签:

【中文标题】如何计算 C++ 中双精度向量的累积和?【英文标题】:How to calculate the cumulative sum for a vector of doubles in C++? 【发布时间】:2011-03-18 08:02:40 【问题描述】:

我有一个双精度向量,我需要创建另一个数组,它是第一个元素的累积和。例如;

 vector<double> Array(10,1);
 vector<double> Sum(10);  

 Sum[0] = Array[0]; 
 for(unsigned int i=1; i<Array.size(); i++)
     Sum[i] = Sum[i-1] + Array[i]; 

是否有执行上述累积和的内置函数?

【问题讨论】:

@Oded:很可能是包含 std 命名空间的 C++。瓦维尔的任何确认? @Akusete - 可能,但可以是任何支持 &lt;&gt; 通用语法并具有类似 C 结构的语言(Java、C#、C++...) 我同意,它远非结论性 (+1),但考虑到小写向量的使用和周围的构造函数语法,在提供更多信息之前,它不是一个糟糕的起点。 标签说它是 C++ ...所以可以肯定地说我们在谈论 C++ @Laurens:只有在 Akusete 的评论之后,Pontus Gagge 才添加了 C++ 标签。 【参考方案1】:

没有测试过,类似

std::partial_sum(Array.begin(), Array.end(), Sum.begin(), plus&lt;double&gt;());

如果是 C++,应该可以解决问题。 (其实plus&lt;double&gt;()可以默认掉,it seems。)

【讨论】:

如果要显式传递二进制操作,必须是std::plus&lt;double&gt;() 谢谢,我总是记错!现在,是 plus 不好还是什么......?反正总和大概是1984年! :-) #include 需要使用 std::partial_sum。如果 Array 是 std::vector 类型,则绝对不需要 std::plus

以上是关于如何计算 C++ 中双精度向量的累积和?的主要内容,如果未能解决你的问题,请参考以下文章

如何将双精度向量传递给构造函数,然后在子类中访问其数据(在 C++ 中)?

C++中双减法的优化

c语言中双精度浮点数(即double类型数据)的取值范围

如何在 C++ 中快速计算向量的归一化 l1 和 l2 范数?

如何在R中的一个向量中累积添加值

如何处理 vb.net 中双精度数的舍入错误?