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

标签 c++ stack-overflow

我需要处理大量 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/

相关文章:

c++ - 构造函数中的 Const 参数导致 stackoverflow

java - 仅限 Android 2.3.3 设备上的 Stackoverflow

C - 出现错误 *** 检测到堆栈粉碎 ***

java - Stackoverflow-在 OGM 中加载 RelationshipEntity 时出现异常

c++ - 如何使用 auto 声明数组

c++ - 如何自记录模板库类调用的回调函数?

c++ - 如何创建 constexpr std::vector<std::string> 或类似的东西?

c++ - 如何停止对 QThread 的长时间操作?

c++ - 多个小仿函数类的共享头文件?

c - 有没有办法在运行时确定可用的堆栈空间?