C++ 矩阵转置代码分析及错误修正
C++ 矩阵转置代码分析及错误修正
以下代码片段展示了一个C++矩阵转置函数:c++int** transposeMatrix(int a, int row,int col){ int result = new int*[col]; for(int i=0; i<col; i++){ result[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;}
代码问题分析:
原始代码中,第5行 a[i] = new int[row]; 存在错误。应该将 a 替换为 result,以便正确分配转置矩阵的内存空间。
*修正后的代码:c++int transposeMatrix(int a, int row,int col){ int result = new int[col]; for(int i=0; i<col; i++){ result[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;}
代码说明:
该函数接收一个二维数组 a 以及其行数 row 和列数 col 作为参数。它创建一个新的二维数组 result 来存储转置矩阵。
外层循环遍历转置后的矩阵行,内层循环遍历转置后的矩阵列。代码 result[i][j]=a[j][i]; 将原始矩阵 a 中第 j 行第 i 列的元素复制到 result 中第 i 行第 j 列的位置,从而实现矩阵转置。
注意:
使用动态分配的内存空间后,需要手动释放内存,避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/ljI3 著作权归作者所有。请勿转载和采集!