我需要处理大数字的浮点数(> 200,000个数字)并对这些数组执行一些数学运算.
您建议如何处理这些数组,以免出现任何堆栈溢出问题?
更新:我想做简单和复杂的数学运算(sums,products,sin,cos,arctan).
您需要按顺序操作的简单数值数据?
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行拆分,以便同时只有很多浮点数存储在内存中.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |