c++ - 如何在 Qt/C++ 中有效地重新初始化多维数组?

标签 c++ qt multidimensional-array

在 Qt 中,我有一个 3-D int 数组(比如 ID[x][y][z]),我需要在计算期间将其设置回 0。

有没有不使用循环的有效方法?

我需要重新初始化,因为我正在运行一个具有简单成本函数的特定算法,以获得对以下更详细计算的估计,并且我想使用相同的数据结构。简单地覆盖数组不是一种选择,因为算法会在写入条目之前读取并检查条目。

最佳答案

迟早会有一个循环,但您可以将其委托(delegate)给另一个更优化的函数。

此外,如果“3D 数组”实际上是一些基本类型的数组(如 intchar)的数组,那么所有内存都是连续的因此您可以使用单个函数调用在单个调用中清除所有内存。

现在使用哪个函数;在 C++ 中,基本上可以使用两个函数:旧 C memset函数和 C++ std::fill功能。两者都应该工作正常,具有适当的转换和大小,以将所有数据设置为特定值。

关于c++ - 如何在 Qt/C++ 中有效地重新初始化多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30484410/

相关文章:

c++ - 将 QGraphicsScene 打印/保存为单色图像质量非常差

c++ - 静态多维数组 (C/C++)

java - 将特定行从一个二维数组复制到另一个二维数组,无需 system.arraycopy

c - C如何知道函数中二维动态数组的维度?

c++ - 创建变体交替值和值数组

C++ - 迭代 vector 的替代方法

c++ - Qt中的全局变量,如何?

c++ - Boost multiprecision 失败,因为 complex 的实现试图在 _Isinf 或 _Isnan 等内部函数中转换为 double

c++ - 为契约(Contract)指定违规处理程序

c++ - 在Qt(4.6)中,直接调用slots可以吗?