Стандарт фактически гарантирует, что vector
является непрерывным в памяти и что &a[0]
может быть передан функции C
, которая ожидает массив.
Исключением из этого правила является vector<bool>
, который использует только один бит на bool
, хотя он имеет непрерывную память, он не может использоваться как bool*
(это широко считается ложной оптимизацией и ошибкой).
Кстати, почему бы вам не использовать итераторы? Для этого они нужны.
Вы можете получить 8 соседних ячеек, используя два разных массива. Эти массивы используются для получения номеров строк и столбцов 8 соседей данной ячейки
int rowNbr[] = new int[] {-1, -1, -1, 0, 0, 1, 1, 1};
int colNbr[] = new int[] {-1, 0, 1, -1, 1, -1, 0, 1};
и итерации данной матрицы путем добавления текущей строки / столбца к вышеуказанным массивам, например:
for (int k = 0; k < 8; ++k) {
sop(matrix[row + rowNbr[k], col + colNbr[k]])
}
[ 115] Кроме того, вы можете проверить https://www.geeksforgeeks.org/find-number-of-islands/
Надеюсь, это поможет вам в дальнейшем процессе мышления. Thnx