使用指针算法循环动态分配的二维数组
Looping a dynamically allocated 2d array with pointer arithmetic
我有一个动态分配的二维数组,我想用指针算法遍历它,因为在运行前我不知道行数和列数。
我知道如何使用一维数组执行此操作:
int *arr = new int[size];
并遍历它:
for (int *i = arr; i < arr + arr.size(); i++){
*i = 20; //sets all elements to 20
}
但是,我卡在了 2d 级别。
这是我目前所拥有的:
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
}
}
第二个循环显然不正确,我只是不知道还能尝试什么。
您应该对 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
}
}
我有一个动态分配的二维数组,我想用指针算法遍历它,因为在运行前我不知道行数和列数。
我知道如何使用一维数组执行此操作:
int *arr = new int[size];
并遍历它:
for (int *i = arr; i < arr + arr.size(); i++){
*i = 20; //sets all elements to 20
}
但是,我卡在了 2d 级别。 这是我目前所拥有的:
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
}
}
第二个循环显然不正确,我只是不知道还能尝试什么。
您应该对 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
}
}