我需要处理大量 float 数组(>200,000 个数字)并使用这些数组执行一些数学运算。
你有什么建议来处理这些数组,这样我就不会遇到任何堆栈溢出问题?
更新:我想进行简单和复杂的数学运算(求和、乘积、sin、cos、arctan)。
最佳答案
您需要对纯数值数据进行顺序操作?
std::valarray<double>
如果分析显示这会减慢您的速度,请寻找方法使其更快
std::valarray<double>::resize()
(是的,不幸的是没有 reserve()
。
为什么 std::valarray<double>
对于数值数据?如果要对每个元素执行操作,只需调用
std::valarray<double>::apply(somefunction)
有关详细信息,请参阅:a C++ reference .
如果你想能够reserve()
, 你需要 std::vector
,这也很好,但没有重载您可能想要使用的数学函数。
编辑:这当然是假设您有足够的内存来将所有数组放入 std::valarray
中秒。如果不是,您应该拆分 200,000 行,以便内存中同时只有这么多 float 。
关于c++ - 在 C++ 中处理大型数字数组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213131/