我正在尝试删除2d数组的最后一行和最后一列。我为此创建了此方法。
void deleteLastRowColumn(int **A, int row, int column)
{
int **temp = A;
A = new int *[row - 1];
for (int i = 0; i < row - 1; i++)
{
A[i] = new int[column - 1];
for (int j = 0; j < column - 1; j++)
{
A[i][j] = temp[i][j];
}
delete[] temp[i];
}
}
并使用
打印结果void printArray(int **a, int row, int column)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
}
我的主要方法创建了一个5x5的数组
int main()
{
int **a;
a = new int *[5];
for (int i = 0; i < 5; i++)
a[i] = new int[5];
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
a[i][j] = (i*5) + j + 1;
}
}
printArray(a, 5, 5);
cout << "\n\n\n\n";
deleteLastRowColumn(a,5,5);
printArray(a,4,4);
}
输出对我而言没有意义:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
6 7 8 9
11 12 13 14
16 17 18 19
0 0 18 19
我希望它删除最后一列和最后一行,但是发生了一些不同。如果您能解释一下这是怎么回事,那太好了!
谢谢。