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 指针数组的大小,可以修复错误并实现正确的矩阵转置功能。

C++ 矩阵转置代码优化:解决内存分配错误

原文地址: https://www.cveoy.top/t/topic/ljIA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录