C++ 程式過載加法運算子以相加兩個矩陣
假設我們有兩個矩陣 mat1 和 mat2。我們將必須相加這兩個矩陣並構成第三個矩陣。我們必須透過過載加法運算子來執行此操作。
因此,如果輸入為
| 5 | 8 |
| 9 | 6 |
| 7 | 9 |
| 8 | 3 |
| 4 | 7 |
| 6 | 3 |
那麼輸出將為
| 13 | 11 |
| 13 | 13 |
| 13 | 12 |
為了解決這個問題,我們將遵循以下步驟 -
過載加法運算子,這將以另一個矩陣 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP