gpt4 book ai didi

multidimensional-array - D 中编译时生成的二维数组

转载 作者:行者123 更新时间:2023-12-01 09:31:48 25 4
gpt4 key购买 nike

在我的程序中,我需要生成从 1 到 100,000 的数字的幂(从 0 到 5)总和的数组。

所以我尝试编译这段代码:

const enum size_t MAX_ARRAY_SIZE = 100_000 + 1;
const enum size_t MAX_POWER_SIZE = 5 + 1;
const enum power_sum = calc_power_sum();

// some unimportant code here

pure ulong[MAX_POWER_SIZE][MAX_ARRAY_SIZE] calc_power_sum() {
ulong[MAX_POWER_SIZE][MAX_ARRAY_SIZE] power_sum;

power_sum[0][] = 1;

foreach (x, ref element; power_sum[1]) {
element = x;
}

foreach (n; 2 .. MAX_POWER_SIZE) {
foreach (x, ref element; power_sum[n]) {
element = power_sum[n - 1][x] * power_sum[1][x];
}
}


foreach (ref power; power_sum) {
foreach (x; 1 .. MAX_ARRAY_SIZE) {
power[x] += power[x - 1]; // error appears here
}
}

return power_sum;
}

但是编译器说:

$ dmd problem.d
problem.d(130): Error: array index 6 is out of bounds [1LU, 2LU, 3LU, 4LU, 5LU, 6LU][0 .. 6]
problem.d(15): called from here: calc_power_sum()

我做错了什么?

最佳答案

乍一看,您似乎只是误解了数组维度顺序。你有

ulong[MAX_POWER_SIZE][MAX_ARRAY_SIZE]

你的代码直接相反

ulong[MAX_ARRAY_SIZE][MAX_POWER_SIZE]

另外我担心 100 000 可能有点太多了,在上面提到的修复之后,我得到一个内部编译器错误。虽然适用于较小的 MAX_ARRAY_SIZE 值。

关于multidimensional-array - D 中编译时生成的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com