33.假定按行的方式把对称矩阵的下三角区域储存在一个一维数组中。设计一个C++类lowerSymmetricMatrix,包含取值和存值方法。这两个方法的时间复杂度应为(1)
#include <iostream>
using namespace std;
template <class T>
class lowerSymmetricMatrix{
public :
lowerSymmetricMatrix(int theRows = 0, int theColumns=0)
{
this->theColumns=theColumns;
this->theRows=theRows;
element= new T [theRows*theColumns];
};
~lowerSymmetricMatrix(){ delete [] element;}
void setelement(T a,int i=0,int j=0);
T getelement(int i=0,int j=0);
private:
int theRows,theColumns;
T *element;
};
template <class T>
T lowerSymmetricMatrix<T>::getelement(int i,int j){
return this->element[i+j+(i*(i-1))/2];
}
template <class T>
void lowerSymmetricMatrix<T>::setelement(T a,int i,int j){
element[i+j+(i*(i-1))/2]=a;
}
在做这道题时有一个小问题,就是在类下面写方法的时候,不能完全复制。比如setelement(T a,int i=0,int j=0)就会报错,需要把初值删除。
报错如下