C++ 程式過載加法運算子以相加兩個矩陣


假設我們有兩個矩陣 mat1 和 mat2。我們將必須相加這兩個矩陣並構成第三個矩陣。我們必須透過過載加法運算子來執行此操作。

因此,如果輸入為

58
96
79


83
47
63

那麼輸出將為

1311
1313
1312

為了解決這個問題,我們將遵循以下步驟 -

  • 過載加法運算子,這將以另一個矩陣 mat 作為第二個引數

  • 定義一個空白的二維陣列 vv

  • 定義一個二維陣列 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

更新於: 07-10-2021

3K+ 瀏覽量

開啟您的 事業

完成課程即可獲得認證

開始吧
廣告
© . All rights reserved.