linear simulation of multidimensional array

后端 未结 2 1651
暗喜
暗喜 2020-12-09 21:27

I know how to simulate a 2d array in a linear array using [x + y * width] as a linear index.

I can extend this to 3d arrays: [x + y * width + z *

相关标签:
2条回答
  • 2020-12-09 22:05

    Eh, if you want some code... :-) C is language-agnostic enough, ya?

    Assume input: location[dimensions]

    Assume a table exists maxBound[dimensions] that contains the maximum boundaries of each dimension of the table.

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

    Your index will end up in the index field.

    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.
    

    I think this makes sense, but this is just coming out of the top of my head.

    0 讨论(0)
  • 2020-12-09 22:07

    Sure. Just extending your example gives x + y*width + z*width*height + w*width*height*depth + ...

    In other words, dim1 + dim2*size1 + dim3*size1*size2 + dim4*size1*size2*size3 + ...

    0 讨论(0)
提交回复
热议问题