C++ 程序重载加法运算符以添加两个矩阵
c++server side programmingprogramming
假设我们有两个矩阵 mat1 和 mat2。我们必须将这两个矩阵相加并形成第三个矩阵。我们必须通过重载加法运算符来实现这一点。
因此,如果输入如下
5 | 8 |
9 | 6 |
7 | 9 |
8 | 3 |
4 | 7 |
6 | 3 |
则输出将是
13 | 11 |
13 | 13 |
13 | 12 |
为了解决这个问题,我们将遵循以下步骤 −
重载加法运算符,这将以另一个矩阵 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