假设有一个 N x N 的方形二维数组,表示为一维数组。让数组为 5x5,如下所示,数组中的值不重要。
std::vector< int > array {
0, 1, 2, 3, 4,
5, 6, 7, 8, 9,
0, 1, 2, 3, 4,
5, 6, 7, 8, 9,
0, 1, 2, 3, 4
};
如果我们说这个数组有 5 行 5 列,如何检测它们是否在行的边缘?例如,如果你在第 4 行 9 的索引上,你怎么知道你可以不改变行向左走,但向右走会前进到下一行?关于边缘,如何访问单元格的邻居?第 4 行 9 所在的索引没有右邻居。
我能想到的唯一方法是当前索引,在这种情况下是
int index = row * num_cols + col
并且也许使用模数(索引 % 5 == 0)来确定是否在边缘。但这并不能决定我们是否可以向左或向右。