让我们说,我有一个MxN数组:int *b;
和int **c;
其中
b
中的值按列(来自c
)存储,我需要输入值
从c
到b
b
中的值按行(来自c
)存储,我需要输入值
从c
到b
我知道基本上我会这样做:
j = index / N;
i = index - (j * M);
为了将1D索引转换为2D坐标但有问题 如何实现这2个案例,1)和2)?
答案 0 :(得分:1)
设W是2D数组的宽度,H是它的高度。然后假设行主要布局,1D索引'ix'与2D索引[x,y]相关:
ix = y*w + x;
y = ix / w; // implicit floor
x = ix % w;
e.g:
const int W = 3, H=2;
int m[H][W] = {{1,2,3}, {4,5,6}};
int* oneD = &m[0][0];
assert(oneD[1*W + 2] == m[1][2]); // element 6, y=1, x=2