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
广告