8

Doğrusal dizinde, [x + y * width] doğrusal dizilimi kullanarak bir 2d dizisini simüle etmeyi biliyorum.Çok boyutlu dizinin doğrusal simülasyonu

Bunu 3B dizilere genişletebilirim: [x + y * width + z * width * height].

N boyutlu dizilim için genel bir formül var mı?

Dil-agnostik bir yanıt arıyorum.

cevap

7

Elbette. Sadece, örnek Başka bir deyişle x + y*width + z*width*height + w*width*height*depth + ...

verir uzanan dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

bazı kod isterseniz
1

Ha, ... :-) C dil agnostik yeter ya? Tablo maxBound [boyutları] var

tablonun her boyutun en sınırlarını içerdiğini varsayalım konumu [boyutları]:

giriş varsayalım.

int index = 0; 
int multiplier = 1; 
for (int i = 0;i < dimensions;i++) 
{ 
    index += location[i] * multiplier; 
    multiplier *= maxBound[i]; 
} 

Dizininiz dizin alanında bitecektir.

Test: 
location = [3,4,5] 
maxBound = [10,20,30] 
loop initial: index = 0, multiplier = 1. 
loop i=0: index = 3, multiplier = 10. 
loop i=1: index = 43, multiplier = 200. 
loop i=2: index = 1043, multipler = 6000. 

Bunun mantıklı olduğunu düşünüyorum, ancak bu sadece başımın tepesinden çıkıyor.

İlgili konular