Newbie question: Right way of creating a matrix using the new operator?

Hi,

I'm trying to dynamically create a matrix, let's call it M, which can be accesed using the usual M[i][j] notation. That's it, it should behave as if I had declared it as a double M[5][5], except the size should be a variable rather than 5.

This is the simplest example:

Code:

`#include <iostream.h>`

void createMatrix(int size) {

double *M = new double[size*size]; // doesn't work :(

/*

// This does work, but is really awful... there's got to be a better way!

double **M = new double*[size];

for (int k = 0; k < size; k++)

M[k] = new double[size];

*/

// this MUST work:

for(int i = 0; i < size; i++)

for(int j = 0; j < size; j++)

M[i][j] = 3.141592; // whatever

delete[] M;

}

int main() {

int n;

cout << "Size of the matrix? ";

cin >> n;

createMatrix(n);

return 0;

}

Please, tell me there's a better solution that the horrible hack I did!!

:)