C++ 矩阵乘法函数实现及示例 - 使用动态内存分配

本文提供了一个 C++ 函数实现矩阵乘法运算,并使用动态内存分配来创建结果矩阵。该函数接受两个矩阵作为输入,返回指向结果矩阵的指针。示例展示了函数的使用方法,并说明了如何正确释放内存以避免内存泄漏。

函数原型

int** multiplication(int a[][1], int aM, int aN,int b[] [1],int bM,int bN);

其中,ab 分别为两个矩阵,aMaN 分别为矩阵 a 的行数和列数,bMbN 分别为矩阵 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;
}

使用示例

假设有两个矩阵 ab,分别为:

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;

说明

  • 函数使用动态内存分配来创建结果矩阵,避免了栈溢出的问题。
  • 在使用完毕后,必须释放动态分配的内存,以防止内存泄漏。
  • 该函数仅适用于二维矩阵的乘法,如果需要进行更高维度的矩阵乘法,需要修改代码逻辑。
C++ 矩阵乘法函数实现及示例 - 使用动态内存分配

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

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