include
using namespace std;
class MyMatrix
{
public:
MyMatrix(void);
MyMatrix(size_t row,size_t col);
MyMatrix(const MyMatrix& rhs);
~MyMatrix(void);
MyMatrix& operator=(const MyMatrix& rhs);
size_t Rows()const {return _row;};
size_t Cols()const {return _col;};
double& operator()(size_t r,size_t c);
const double& operator()(size_t r,size_t c)const;
private:
size_t _row,_col;
double * _pmat;
};
MyMatrix::MyMatrix(void)
:_row(0),_col(0),_pmat(new double[0])
{}
MyMatrix::MyMatrix(size_t row,size_t col):_row(row),_col(col),_pmat(new double[row * col]){
size_t elems = _row * _col;
for(size_t i=0;i
MyMatrix::MyMatrix(const MyMatrix& rhs):_row(rhs._row),_col(rhs._col),_pmat(new double[rhs._row * rhs._col]){
size_t elems = _row * _col;
for(size_t i=0;i
MyMatrix::~MyMatrix(void){
delete [] _pmat;
}
MyMatrix& MyMatrix::operator=(const MyMatrix& rhs){
if(this != &rhs){
_row = rhs._row;
_col = rhs._col;
delete [] _pmat;
size_t elems = _row *_col;
_pmat = new double [elems];
for(size_t i=0;i<elems;i++)
_pmat[i] = rhs._pmat[i];
}
return *this;
}
double& MyMatrix::operator()(size_t r,size_t c){
if(r>=_row || c>=_col)
throw "Error Row or Columns.";
return _pmat[r*_col+c];
}
const double& MyMatrix::operator()(size_t r,size_t c)const{
if(r>=_row || c>=_col)
throw "Error Row or Columns.";
return _pmat[r*_col+c];
}
ostream& operator<<(ostream& os,const MyMatrix& mat){
os<
int main()
{
MyMatrix mat1(3,4);
cout<
RMQ可以优化找最小那一步,优化后最坏情况整个算法也是O(NlogN)的?上面的做法最坏情况下应该是O(N^2)的。