I am trying to maximise the efficiency of my matrix classes. There's a matrix defined at each grid point i. The elements of the matrix at all grid points are are stored inside ptr00, ptr10 and ptr20. Any adivce?
ie for a 3 x 1 matrix
Code:
class matrix_col {
public:
int i;
double *ptr00, *ptr10, *ptr20;
matrix_col(){
ptr00 = new double[Grids];
ptr10 = new double[Grids];
ptr20 = new double[Grids];
for(i = 0; i < (Grids); i++){
ptr00[i] = 0;
ptr10[i] = 0;
ptr20[i] = 0;
}
}
//copy constructor
matrix_col(const matrix_col &a){
int i;
ptr00 = new double[Grids];
ptr10 = new double[Grids];
ptr20 = new double[Grids];
for(i = 0; i < (Grids); i++){
ptr00[i] = a.ptr00[i];
ptr10[i] = a.ptr10[i];
ptr20[i] = a.ptr20[i];
}
}
~matrix_col(){
delete [] ptr00;
delete [] ptr10;
delete [] ptr20;
}
friend matrix_col operator+(const matrix_col &, const matrix_col &);
};
// Overload + for ob1 + ob2.
matrix_col operator+(const matrix_col &left, const matrix_col &right)
{
int i;
matrix_col temp;
for (i = 0; i < Grids; i++){
temp.ptr00[i] = left.ptr00[i] + right.ptr00[i];
temp.ptr10[i] = left.ptr10[i] + right.ptr10[i];
temp.ptr20[i] = left.ptr20[i] + right.ptr20[i];
}
return temp;
}