c++ - 一维数组元素的最近邻操作

标签 c++ multidimensional-array

我有二维数组,想将其转换为一维数组。

二维数组是:

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/

相关文章:

c++ - ffmpeg(libavcodec)。 avcodec_encode_video 中的内存泄漏

c++ - 来自文本文件的grep字符串并将其复制到CMake中的目录

arrays - ReDim在Visual Basic 6中保留为多维数组

python - 如何强制numpy将二维数组解释为一维

c++ - 如何在 C++ 中使用字符串修饰符创建新字符串?

c++ - 设置大 Eigen VectorXd 时出现 clang 错误

c++ - 用于在 C/C++ 中实现二维数组的数据局部性

c - 为什么我从来没有超过1?

javascript - 如何使用 VueJS 或 JavaScript 在多维数组中进行搜索

c++ - 三维数组的下标是否严格定义?