C++ 程序重载加法运算符以添加两个矩阵

c++server side programmingprogramming

假设我们有两个矩阵 mat1 和 mat2。我们必须将这两个矩阵相加并形成第三个矩阵。我们必须通过重载加法运算符来实现这一点。

因此,如果输入如下

58
96
79
83
47
63

则输出将是

1311
1313
1312

为了解决这个问题,我们将遵循以下步骤 −

  • 重载加法运算符,这将以另一个矩阵 mat 作为第二个参数

  • 定义一个空白的 2d 数组 vv

  • 定义一个 2D 数组 vv 并将当前矩阵元素加载到其中

  • 用于初始化 i := 0,当 i < vv 的大小,更新(将 i 增加 1),执行以下操作:

    • 初始化 j := 0,当 j < vv[0] 的大小时,更新(将 j 增加 1),执行以下操作:

      • vv[i, j] := vv[i, j] + mat.a[i, j]
  • 使用 vv 返回一个新矩阵

让我们看看下面的实现以便更好地理解 −

示例

#include <iostream>
#include <vector>
using namespace std;
class Matrix {
  public:
    Matrix() {}
    Matrix(const Matrix& x) : a(x.a) {}
    Matrix(const vector<vector<int>>& v) : a(v) {}
    Matrix operator+(const Matrix&);
    vector<vector<int>> a;
    void display(){
        for(int i = 0; i<a.size(); i++){
            for(int j = 0; j<a[i].size(); j++){
                cout << a[i][j] << " ";
            }    
            cout << endl;
        }
    }
};
Matrix Matrix::operator+(const Matrix& m){
    vector<vector<int>> vv = a;
    for (int i=0; i<vv.size(); i++){
        for (int j=0; j<vv[0].size(); j++){
            vv[i][j] += m.a[i][j];
        }
    }
    return Matrix(vv);
}
int main(){
   vector<vector<int>> mat1 = {{5,8},{9,6},{7,9}};
   vector<vector<int>> mat2 = {{8,3},{4,7},{6,3}};
   int r = mat1.size();
   int c = mat1[0].size();
   Matrix m1(mat1), m2(mat2), res;
   res = m1 + m2;
   res.display();
}

输入

{{5,8},{9,6},{7,9}}, {{8,3},{4,7},{6,3}}

输出

13 11
13 13
13 12

相关文章