Re: Dynamic allocation of memory problem
On Jun 25, 1:13 pm, Richard Herring <junk@[127.0.0.1]> wrote:
[...]
Count up how much time you have wasted already trying to make
your code work. Then look at this:
Instead of this:
double **Matrix = new double*[n];
for(int i=0; i<n; i++)
Matrix[i] = new double[n];
you'd write:
vector<vector<double> > Matrix(n, n);
Is this still true? I know that the C++03 standard guarantees
it, but I was under the impression that this was unintentional
(and the current draft seems to have been reworded to ban it).
The correct way of writing this is:
std::vector< std::vector< double > >
matrix( n, std::vector< double >( n ) ) ;
This can be made easier with typedefs.
More reasonably, of course, you'd write a Matrix class, and
never really write anything like the above, except maybe in the
Matrix class. (Also, if you use a Matrix class, you can easily
switch between a vector of vectors, and a one dimensional vector
with calculation of the indices in the class, depending on what
works best for you.) Trying to use a matrix without defining a
class to manage it is his first mistake, regardless of the
structures used to implement it.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34