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


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

    #include 
    #include 
    
    
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88

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

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

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

    输出结果如下图所示:
    在这里插入图片描述

  • 相关阅读:
    Python与JAVA有何区别?
    Android仿QQ消息拖拽效果(一)(二阶贝塞尔曲线使用)
    英伟达首席科学家:深度学习硬件的过去、现在和未来
    干货 | 每日十道Java基础面试题
    ios safari 浏览器跳转页面没有自适应
    【JavaScript-29】js的例子实现动画的无缝轮播,复制即可用
    实战!RPA厂商选型分享
    C++ 关键字及标识符命名规则
    c++Flood Fill算法之池塘计数,城堡问题,山峰与山谷(acwing)
    异或运算符 ^的好处--笔记
  • 原文地址:https://blog.csdn.net/qq_22734027/article/details/134516906