【C++】使用std::vector()函数实现矩阵的加、减、点乘、点除等运算

本文通过vector()函数表示矩阵的形式,对 加、减、点乘、点除等运算进行编码和运行,相应结果如下文所述。

#include <iostream>
#include <vector>


using namespace std;

// 矩阵加法
vector<vector<int>> add(vector<vector<int>>& A, vector<vector<int>>& B) {
    vector<vector<int>> result(A.size(), vector<int>(B[0].size()));
    for (int i = 0; i < A.size(); i++) {
        for (int j = 0; j < B[0].size(); j++) {
            result[i][j] = A[i][j] + B[i][j];
        }
    }
    return result;
}

// 矩阵减法
vector<vector<int>> subtract(vector<vector<int>>& A, vector<vector<int>>& B) {
    vector<vector<int>> result(A.size(), vector<int>(B[0].size()));
    for (int i = 0; i < A.size(); i++) {
        for (int j = 0; j < B[0].size(); j++) {
            result[i][j] = A[i][j] - B[i][j];
        }
    }
    return result;
}

// 矩阵点乘
vector<vector<int>> dot_product(vector<vector<int>>& A, vector<vector<int>>& B) {
    vector<vector<int>> result(A.size(), vector<int>(B[0].size()));
    for (int i = 0; i < A.size(); i++) {
        for (int j = 0; j < B[0].size(); j++) {
            result[i][j] = 0;
            for (int k = 0; k < A[0].size(); k++) {
                result[i][j] += A[i][k] * B[k][j];
            }
        }
    }
    return result;
}

本文通过vector表示矩阵的内容,进行加、减、点乘、点除四种运算示例,包含代码和运行结果,可直接运行。

// 矩阵点除
vector<vector<int>> divide(vector<vector<int>>& A, vector<vector<int>>& B) {
    vector<vector<int>> result(A.size(), vector<int>(B[0].size()));
    for (int i = 0; i < A.size(); i++) {
        for (int j = 0; j < B[0].size(); j++) {
            result[i][j] = A[i][j] / B[i][j];
        }
    }
    return result;
}

void printMatrix(const vector<vector<int>>& matrix) {
    for (const auto& row : matrix) {
        for (const auto& element : row) {
            cout << element << ' '; // 可以按你的需求更改分隔符,例如使用逗号或制表符等。这里使用空格作为分隔符。
        }
        cout << '\n'; // 每行结束后换行。你可以更改或删除此行,根据你的需求。
    }
}
int main() {
    // 测试矩阵加法
    vector<vector<int>> A = { {1, 2}, {3, 4} };
    vector<vector<int>> B = { {5, 6}, {7, 8} };
    vector<vector<int>> C = add(A, B);
    cout<<"加法运算:" << endl;
    printMatrix(C);
 

    // 测试矩阵减法
    cout << "减法运算:" << endl;
    vector<vector<int>> D = subtract(A, B);
    printMatrix(D);

    // 测试矩阵点乘
    cout << "点乘运算:" << endl;
    vector<vector<int>> E = dot_product(A, B);
    printMatrix(E);
    cout << "点除运算:" << endl;
    // 测试矩阵点除
    vector<vector<int>> F = divide(A, B);
    
    printMatrix(F);
    return 0;
}

上述代码主要定义了四个操作矩阵的函数:加法、减法、点乘和点除,以及一个打印矩阵的函数。

**add 函数:**这个函数实现了两个矩阵的加法操作。它首先创建一个新的矩阵,大小与输入的两个矩阵相同,然后逐个元素地加上两个输入矩阵的对应元素。
**subtract 函数:**这个函数实现了两个矩阵的减法操作。它首先创建一个新的矩阵,大小与输入的两个矩阵相同,然后逐个元素地减去两个输入矩阵的对应元素。
**dot_product 函数:**这个函数实现了两个矩阵的点乘操作。它首先创建一个新的矩阵,大小与输入的两个矩阵相同,然后逐个元素地计算两个输入矩阵的对应元素的乘积,并把乘积相加。
**divide 函数:**这个函数实现了两个矩阵的点除操作。注意,这段代码并未处理除数为0的情况。在实际应用中,你需要添加额外的处理逻辑来应对除数为0的情况。
**printMatrix 函数:**这个函数用于打印一个矩阵。它通过嵌套循环来遍历矩阵的每一个元素,并打印出来。每个元素之后都有一个空格,每行结束之后会换行。
**在 main 函数中,**这段代码用两组示例矩阵测试了上述四个函数,并使用 printMatrix 函数打印了结果。

**注意:**由于这段代码并未处理除数为0的情况,所以在实际使用 divide 函数时,需要添加额外的逻辑来处理除数为0的情况,否则可能会导致运行时错误。

输出结果如下图所示:

版权声明:本文为博主作者:木彳原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_22734027/article/details/134516906

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2024年2月19日
下一篇 2024年2月19日

相关推荐