#ifndef MT3Q6_H #define MT3Q6_H /////////////////////////////////////////////////////////////// // MT3Q6.h - Matrix // // // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2012 // /////////////////////////////////////////////////////////////// #include #include template class Matrix { public: typedef std::vector row; // row wrapper class would let us handle // index error by throwing exception Matrix(size_t M, size_t N); //////////////////////////////// don't need these /// // Matrix(const Matrix& m); // Matrix& operator=(const Matrix& m); // row& operator[](size_t i); row operator[](size_t i) const; size_t rows() const; size_t cols() const; private: std::vector _matrix; size_t _M, _N; }; template size_t Matrix::rows() const { return _M; } template size_t Matrix::cols() const { return _N; } template Matrix::Matrix(size_t M, size_t N) : _M(M), _N(N) { for(size_t i=0; i<_M; ++i) { row r; for(size_t j=0; j<_N; ++j) { r.push_back(T()); } _matrix.push_back(r); } } template typename Matrix::row& Matrix::operator[](size_t i) { if(i<0 || _M<=i) throw std::exception("row index error"); return _matrix[i]; } template typename Matrix::row Matrix::operator[](size_t i) const { if(i<0 || _M<=i) throw std::exception("row index error"); return _matrix[i]; } template void Display(const Matrix& m) { for(size_t i=0; i