应用vector类来定义二维数组
Description
在类模板T_Matrix中使用类模板T_Vector(向量运算类模板)实现矩阵的加、减运算,在main函数中使用类模板T_Matrix建立整型矩阵对象进行矩阵的加减运算。
Input
输入为若干组数据,每组数据用若干行表示,其中第1行为一个字符(+或-),表示接下来输入的两个矩阵所要做的运算,第2行为两个整数m和n,表示接下来输入的两个矩阵均为m*n的矩阵。随后若干行为两个n*m的矩阵。
Output
输出为若干组数据,每组数据用若干行表示,为一个m*n的矩阵,即运算结果。
Sample Input
+
2 3
1 2 3
4 5 6
1 2 3
4 5 6
-
2 3
1 2 3
4 5 6
7 8 9
10 11 12
Sample Output
2 4 6
8 10 12
-6 -6 -6
-6 -6 -6
HINT
#include<iostream> #include<vector> using namespace std; class Matrix { int column,row; vector< vector<int> >V; public: Matrix(int c,int r):column(c),row(r){} Matrix(Matrix&U); int getcolumn()const{return column;} int getrow()const{return row;} void buildit(); friend void showit(Matrix&U); friend Matrix operator+(const Matrix&first,const Matrix&second); friend Matrix operator-(const Matrix&first,const Matrix&second); }; Matrix::Matrix(Matrix&U){ column=U.column; row = U.row; for(int i=0;i<column;i++) V.push_back(U.V[i]); } void Matrix::buildit() { vector<int>U; int num; for(int i=0;i<column;i++) { for(int j=0;j<row;j++) { cin>>num; U.push_back(num); } V.push_back(U); U.clear(); } } void showit(Matrix & U){ for(int i=0;i< U.column ;i++) { for(int j=0;j<U.row;j++) { if(j==U.row-1) cout<<U.V[i][U.row-1]<<endl; else cout<<U.V[i][j]<<" "; } } } Matrix operator+(const Matrix&first,const Matrix&second){ Matrix getit(first.getcolumn(),first.getrow()); vector<int>TT; for(int i=0;i < (int)first.V.size() ;i++) { for(int j=0;j < (int)first.V[i].size();j++) TT.push_back(first.V[i][j]+second.V[i][j]); getit.V.push_back(TT); TT.clear(); } return getit; } Matrix operator-(const Matrix&first,const Matrix&second){ Matrix getit(first.getcolumn(),first.getrow()); vector<int>TT; for(int i=0;i < (int)first.V.size() ;i++) { for(int j=0;j < (int)first.V[i].size();j++) TT.push_back(first.V[i][j]-second.V[i][j]); getit.V.push_back(TT); TT.clear(); } return getit; } int main(){ char ch; int r,c; while(cin>>ch){ cin>>c>>r; Matrix one(c,r); Matrix two(c,r); Matrix three(c,r); one.buildit(); two.buildit(); if(ch=='+') three = one + two; else three = one - two; showit(three); } }