【发布时间】:2011-03-16 03:43:52
【问题描述】:
如何将数组初始化为 0?
我试过了。
my @arr = ();
但它总是给我一个警告,“使用未初始化的值”。我事先不知道数组的大小。我动态填充它。我认为上面的代码应该将其初始化为 0。
我该怎么做?
【问题讨论】:
-
向我们展示您遇到问题的代码。 为什么你需要将它设置为0? XY problem
-
与此类似。我有另一个数组,其数字如 [0,0,0,1,2,2,3,3,3,4] 现在我必须计算 0,1,2,3,4 的数量,所以我将使用另一个数组...并将计数存储在给定的索引中。所以我会有 arr[0] = 3 arr[1] = 1 arr[2] = 2 arr[3] = 3 arr[4] = 4 所以当我遇到一个元素时我会... arr[i ] = arr[i] + 1;为此,我需要从用 0 初始化的元素开始。上面的代码有效。但它也会引发警告。
-
你可以用 $arr[i]++ 代替 $arr[i] = $arr[i] + 1;此外,如果您的数组为空,$arr[i]++ 仍会将 $arr[i] 设置为 1;
-
@MkV
$arr[i] += 1;在某些情况下可能会更好,++在 Perl 中有一些魔力,导致它有点慢。 -
@Ven'Tatsu:你对此有什么引用(减速)吗?我知道当它是 undef(预转换为 0)或字符串时有魔力。在进行基准测试时,我没有看到明显的速度差异(>1 微秒)。
标签: perl arrays initialization