HackerRank C++ Operator Overloading
Classes define new types in C++. Types in C++ not only interact by means of constructions and assignments but also via operators.
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- class Matrix
- {
- public:
- vector<vector<int> > a;
-
- Matrix & operator + (const Matrix &y)
- {
- for (int m=0; m<y.a.size(); ++m)
- {
- for (int n=0; n<y.a[0].size(); ++n)
- {
- this->a[m][n] = this->a[m][n] + y.a[m][n];
- }
- }
- return *this;
- }
-
- };
-
- int main ()
- {
- int cases,k;
- cin >> cases;
-
- for(k=0;k<cases;k++)
- {
- Matrix x;
- Matrix y;
- Matrix result;
- int n,m,i,j;
-
- cin >> n >> m;
-
- for(i=0;i<n;i++)
- {
- vector<int> b;
- int num;
-
- for(j=0;j<m;j++)
- {
- cin >> num;
- b.push_back(num);
- }
- x.a.push_back(b);
- }
-
- for(i=0;i<n;i++)
- {
- vector<int> b;
- int num;
-
- for(j=0;j<m;j++)
- {
- cin >> num;
- b.push_back(num);
- }
- y.a.push_back(b);
- }
-
- result = x+y;
-
- for(i=0;i<n;i++)
- {
- for(j=0;j<m;j++)
- {
- cout << result.a[i][j] << " ";
- }
- cout << endl;
- }
- }
- return 0;
-
- }