C++ 函数:实现矩阵相乘

本文介绍一个用于计算两个矩阵相乘的 C++ 函数。我们可以使用该函数计算任意行列数的矩阵。

函数定义

函数接受两个二维数组作为参数,并返回一个新的二维数组,表示两个矩阵的乘积。函数定义如下:

int** matrixMultiply(int** matrixA, int** matrixB, int rowA, int colA, int rowB, int colB){
    //函数体
}

其中,matrixAmatrixB 分别表示两个矩阵,rowAcolArowBcolB 分别表示两个矩阵的行数和列数。

函数实现

下面是一个简单的实现示例。该函数会动态分配内存来存储结果矩阵,并在计算完成后释放该内存。

int** matrixMultiply(int** matrixA, int** matrixB, int rowA, int colA, int rowB, int colB){
    //检查矩阵是否可相乘
    if(colA != rowB){
        return nullptr;
    }

    //动态分配内存
    int** result = new int*[rowA];
    for(int i=0; i<rowA; i++){
        result[i] = new int[colB];
    }

    //计算矩阵乘积
    for(int i=0; i<rowA; i++){
        for(int j=0; j<colB; j++){
            int sum = 0;
            for(int k=0; k<colA; k++){
                sum += matrixA[i][k] * matrixB[k][j];
            }
            result[i][j] = sum;
        }
    }

    //返回结果矩阵
    return result;
}

使用示例

我们可以使用以下代码来调用函数并打印结果:

int main(){
    //定义两个示例矩阵
    int rowA = 2, colA = 3;
    int** matrixA = new int*[rowA];
    for(int i=0; i<rowA; i++){
        matrixA[i] = new int[colA];
    }
    matrixA[0][0] = 1;
    matrixA[0][1] = 2;
    matrixA[0][2] = 3;
    matrixA[1][0] = 4;
    matrixA[1][1] = 5;
    matrixA[1][2] = 6;

    int rowB = 3, colB = 2;
    int** matrixB = new int*[rowB];
    for(int i=0; i<rowB; i++){
        matrixB[i] = new int[colB];
    }
    matrixB[0][0] = 7;
    matrixB[0][1] = 8;
    matrixB[1][0] = 9;
    matrixB[1][1] = 10;
    matrixB[2][0] = 11;
    matrixB[2][1] = 12;

    //计算矩阵乘积并打印结果
    int** result = matrixMultiply(matrixA, matrixB, rowA, colA, rowB, colB);
    for(int i=0; i<rowA; i++){
        for(int j=0; j<colB; j++){
            cout << result[i][j] << " ";
        }
        cout << endl;
    }

    //释放内存
    for(int i=0; i<rowA; i++){
        delete[] matrixA[i];
    }
    delete[] matrixA;
    for(int i=0; i<rowB; i++){
        delete[] matrixB[i];
    }
    delete[] matrixB;
    for(int i=0; i<rowA; i++){
        delete[] result[i];
    }
    delete[] result;

    return 0;
}

输出结果为:

58 64
139 154
C++ 函数:实现矩阵相乘

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

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