假設有一個N×N的正方形2維數組,表示爲一維數組。讓數組爲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列,如何檢測它們是否在行的邊緣?例如,如果你在第四行9位的索引處,你怎麼知道你可以在不改變行的情況下向左移動,但是向右移動會前進到下一行? 如何才能訪問細胞的邊緣相鄰的邊緣?第四行9的索引沒有右邊的鄰居。
我能想到的如何做到這將是當前索引的唯一方法,在這種情況下是
int index = row * num_cols + col
,也許使用模量(指數%5 == 0),以確定是否對邊緣。但是這並不能確定我們是可以左轉還是右轉。