C++ 矩阵转置代码优化:解决内存分配错误
C++ 矩阵转置代码优化:解决内存分配错误
以下代码实现矩阵转置功能,但存在错误:
int** transposeMatrix(int **a, int row,int col){
int** result = new int*[col];
for(int i=0; i<row; i++){
a[i] = new int[row];
}
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
result[i][j]=a[j][i];
}
}
return result;
}
问题:
代码中的第 3 行存在错误,int** result = new int*[col] 应该改为 int** result = new int*[row]。
解释:
- 矩阵转置后,行数和列数会互换。因此,结果矩阵的列数应该等于原始矩阵的行数。
- 在代码中,
result指针数组的大小应该与结果矩阵的列数相匹配,即row。
优化后的代码:
int** transposeMatrix(int **a, int row,int col){
int** result = new int*[row];
for(int i=0; i<col; i++){
a[i] = new int[col];
}
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
result[i][j]=a[j][i];
}
}
return result;
}
总结:
代码中的内存分配问题是导致错误的主要原因。通过调整 result 指针数组的大小,可以修复错误并实现正确的矩阵转置功能。
原文地址: https://www.cveoy.top/t/topic/ljIA 著作权归作者所有。请勿转载和采集!