Цикл динамически размещенного 2d массива с арифметикой указателей

У меня есть динамически размещенный массив 2d, и я хотел бы перебрать его с помощью арифметики с указателями, потому что я не буду знать количество строк и число столбцов до времени выполнения.

Я знаю, как это сделать с массивом 1d:

int *arr = new int[size];

и пройти через это:

for (int *i = arr; i < arr + arr.size(); i++){
    *i = 20; //sets all elements to 20
}

Тем не менее, я застрял на 2-м уровне. Вот что у меня так далеко:

int **arr = new int *[row];
for(int i = 0; i<row; i++)
    arr[i] = new int[col];

Чтобы перебрать все значения:

for(int **i=arr; i < arr + row; i++){
    for(int *j=*i; j < j + col; j++){
        *j = 20; // set all values to 20
    }
}

Второй цикл явно неверен, я просто не знаю, что еще попробовать.

1 ответ

Решение

Вы должны сделать то же самое, чтобы j как ты сделал i,

for(int **i=arr; i < arr + row; i++){
    for(int *j=*i; j < *i + col; j++){
        *j = 20; // set all values to 20
    }
}
Другие вопросы по тегам