假设我有一个3*3*3
3D 数组
如果我在数组的[1,1,1]
位置有一个元素,我可以通过1*3*3 + 1*3 + 1 = 13
来找到索引
但是我需要做相反的事情。我需要将13
转换为[1,1,1]
。我该怎么办?
答案 0 :(得分:1)
使用模运算:
13 / 3 / 3 == 1 // 1st index
13 / 3 % 3 == 1 // 2nd index
13 % 3 == 1 // 3d index
其中/
是整数除,而%
是余数。
编辑:让我们概括一下
# you have M = N = K = 3
[M, N, K] array
和任意value
(在您的情况下为13
)
M-th index = value / K / N # % M can be dropped
N-th index = value / K % N
K-th index = value % K
在mD
数组的情况下
[N1, N2, ..., Ni, ..., Nm]
我们有
i-th index = value / Nm / Nm-1 / ... / Ni+1 % Ni