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