我有二维数组,想将其转换为一维数组。
二维数组是:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
到一维数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
如何在一维数组中访问元素号6的最近邻,以便在二维数组中访问时得到相同的结果,如
1 2 3
5 6 7
9 10 11
在 C++ 中?
最佳答案
如果您有一个 M
项长 x N
项高的二维数组,您需要一个 M*N
的一维数组元素。
当试图找到元素 x
的邻居时:
left(x) = (x - 1) % M
right(x) = (x + 1) % M
above(x) = (x - M) % (M * N)
below(x) = (x + M) % (M * N)
请注意,上述解决方案使数组的底部和顶部以及右边缘和左边缘相邻。要摆脱这种情况,只需省略模块化数学并检测您的索引何时移过右/左/上/下边缘。
关于c++ - 一维数组元素的最近邻操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7862190/