【发布时间】:2019-07-17 02:50:50
【问题描述】:
我想在 C++ 中为所有-1 初始化一个大型二维数组(比如 1000x1000,尽管我想更大)。
如果我的数组是一维的,我知道我可以做到:
int my_array[1000];
memset(my_array, -1, sizeof(my_array));
但是,memset 不允许将一个数组的所有元素初始化为另一个数组。我知道我可以制作一个长度为 1000000 的一维数组,但为了便于阅读,我更喜欢二维数组。在将其初始化为所有0 之后,我也可以循环遍历二维数组以设置值,但是这段代码将在我的程序中运行多次,我不确定这会有多快。实现这一目标的最佳方法是什么?
已编辑以添加最小的可重现示例:
int my_array[1000][1000];
// I want my_array[i][j] to be -1 for each i, j
【问题讨论】:
-
请提供minimal reproducible example - 声明的二维数组以及您希望如何初始化它。如果您关心速度,可以将 2D 数组存储在 1D 中并适当地进行索引。
-
循环遍历两个维度。只要你不做任何花哨的事情,你的优化器应该优化这段代码就好了。
-
请注意,1,000,000
ints 将超过许多系统上可用的自动存储。