C++ 矩阵乘法函数实现及示例 - 使用动态内存分配
C++ 矩阵乘法函数实现及示例 - 使用动态内存分配
本文提供了一个 C++ 函数实现矩阵乘法运算,并使用动态内存分配来创建结果矩阵。该函数接受两个矩阵作为输入,返回指向结果矩阵的指针。示例展示了函数的使用方法,并说明了如何正确释放内存以避免内存泄漏。
函数原型
int** multiplication(int a[][1], int aM, int aN,int b[] [1],int bM,int bN);
其中,a 和 b 分别为两个矩阵,aM 和 aN 分别为矩阵 a 的行数和列数,bM 和 bN 分别为矩阵 b 的行数和列数。函数返回一个指向结果矩阵的指针。
函数实现
int** multiplication(int a[][1], int aM, int aN,int b[] [1],int bM,int bN) {
int **result = new int*[aM];
for (int i = 0; i < aM; i++) {
result[i] = new int[bN];
for (int j = 0; j < bN; j++) {
result[i][j] = 0;
for (int k = 0; k < aN; k++) {
result[i][j] += a[i][k] * b[k][j];
}
}
}
return result;
}
使用示例
假设有两个矩阵 a 和 b,分别为:
int a[2][1] = {{1}, {2}};
int b[1][3] = {{3, 4, 5}};
则可以使用以下代码调用矩阵乘法函数:
int **result = multiplication(a, 2, 1, b, 1, 3);
调用完成后,result 指向的矩阵即为结果矩阵。在使用完毕后,应当记得释放 result 指向的内存:
for (int i = 0; i < 2; i++) {
delete[] result[i];
}
delete[] result;
说明
- 函数使用动态内存分配来创建结果矩阵,避免了栈溢出的问题。
- 在使用完毕后,必须释放动态分配的内存,以防止内存泄漏。
- 该函数仅适用于二维矩阵的乘法,如果需要进行更高维度的矩阵乘法,需要修改代码逻辑。
原文地址: https://www.cveoy.top/t/topic/ljwc 著作权归作者所有。请勿转载和采集!