I would like to make a Matrix class in cpp. Can any of you help me about this class? There are two way, and they goes as follows. #include <iostream> class Matrix { private: double** array; int row, column; public: Matrix(int m, int n) { this->row=m; this->column=n; this->array = new double*[m]; for (int i = 0; i < n; i++){ this->array[i] = new double[n]; std::fill(array[i],array[i]+n,0.0); } } Matrix(Matrix &matrix){ this->array=matrix.array; this->row=matrix.row; this->column=matrix.column; } Matrix& operator=(const Matrix& rhs ){ this->row=rhs.row; this->column=rhs.column; for(int i=0;i<row;++i) for(int j=0;j<column;++j) this->array[i][j]=rhs.array[i][j]; } ~Matrix() { for (int i = 0; i < this->row; i++) delete[] this->array[i]; delete[] this->array; } void print(){ for(int i=0;i<this->row;++i){ for(int j=0;j<this->column;++j) printf("%f\t",this->array[i][j]); printf("\n"); } } double * operator [](int m){ return this->array[m]; } }; int main(int argc, const char * argv[]) { Matrix A(2,2); A[0][1]=1; A[0][0]=0; A[1][0]=1; A[1][1]=1; A.print(); return 0; } ---------- The other one using Vector. #include <iostream> #include <vector> using namespace std; class Matrix { private: vector< vector<double> > array; int row, column; public: Matrix(int m, int n) { row = m; column = n; array = vector< vector<double> > (m, vector<double> (n, 0)); } Matrix(Matrix &matrix){ this->array=matrix.array; this->row=matrix.row; this->column=matrix.column; } void print(){ for(int i=0;i<this->row;++i){ for(int j=0;j<this->column;++j) printf("%f\t",this->array[i][j]); printf("\n"); } } vector<double> & operator [](int m){ return this->array[m]; } };