Giả sử chúng ta có hai ma trận là mat1 và mat2. Chúng ta sẽ phải thêm hai ma trận này và tạo thành ma trận thứ ba. Chúng ta sẽ phải làm điều này bằng cách nạp chồng toán tử bổ sung.
Vì vậy, nếu đầu vào giống như
5 | 8 |
9 | 6 |
7 | 9 |
8 | 3 |
4 | 7 |
6 | 3 |
thì đầu ra sẽ là
13 | 11 |
13 | 13 |
13 | 12 |
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Ghi đè toán tử cộng, điều này sẽ lấy một ma trận khác làm đối số thứ hai
-
xác định một mảng 2d trống vv
-
Xác định một mảng 2D vv và tải các phần tử ma trận hiện tại vào nó
-
để khởi tạo i:=0, khi i
-
để khởi tạo j:=0, khi j
- vv [i, j]:=vv [i, j] + mat.a [i, j]
-
- trả về một ma trận mới bằng cách sử dụng vv
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#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(); }
Đầu vào
{{5,8},{9,6},{7,9}}, {{8,3},{4,7},{6,3}}
Đầu ra
13 11 13 13 13 12