Цикл динамически размещенного 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
}
}