在C++中处理大型数字数组的最佳方法是什么?

0 c++ stack-overflow

我需要处理大数字的浮点数(> 200,000个数字)并对这些数组执行一些数学运算.

您建议如何处理这些数组,以免出现任何堆栈溢出问题?

更新:我想做简单和复杂的数学运算(sums,products,sin,cos,arctan).

rub*_*nvb 6

您需要按顺序操作的简单数值数据?

std::valarray<double>
Run Code Online (Sandbox Code Playgroud)

如果分析显示这会减慢您的速度,那么请寻找使其更快的方法

std::valarray<double>::resize()
Run Code Online (Sandbox Code Playgroud)

(是的,reserve()不幸的是没有.

为什么std::valarray<double>数值数据?如果要对每个元素执行操作,只需调用即可

std::valarray<double>::apply(somefunction)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅:C++参考.

如果你想要reserve(),你需要std::vector,这也很好,但没有你可能想要使用的数学函数的重载.


编辑:这当然是假设你有足够的内存来适应你的所有阵列std::valarray.如果没有,您应该将200,000行拆分,以便同时只有很多浮点数存储在内存中.