Tableau à 2 dimensions tailles inconnues

Tableau à 2 dimensions tailles inconnues - C++ - Programmation

Marsh Posté le 22-03-2006 à 14:38:46    

Bonjour à tous,
 
Je souhaiterai créer un tableau à 2 dimensions dont je ne connais pas la taille.
Je sais qu'il faut jouer avec les pointeurs mais je ne vois pas comment faire. J'ai écris ceci :
 
void generate(int m, int n);
{
double *VecteurAlea;  
double **MatriceAlea;
VecteurAlea=new double[n];
MatriceAlea=new double*[m];
int i;
for(i =0;i<m;i++)
  {
     for(k=0;k<n;k++)
         VecteurAlea[k]=(i+1)*k;
     MatriceAlea[i]=VecteurAlea;
  }
}
 
Mais comme MatriceAlea[] est un pointeur sur VecteurAlea, Elle n'est en fait constituée que de la dernière valeur du VecteurAlea. Si n=3 et m=2, MatriceAlea vaudra :   0 2 4 alors qu'il aurait du valoir  0 1 2
              0 2 4                                    0 2 4
 
Comment dois je procéder SVP?

Message cité 1 fois
Message édité par thebestdave76 le 22-03-2006 à 14:41:22
Reply

Marsh Posté le 22-03-2006 à 14:38:46   

Reply

Marsh Posté le 22-03-2006 à 14:48:32    

ouais, ou bien tu utilises des types STL et tu fais des choses propres


Message édité par _darkalt3_ le 22-03-2006 à 14:48:57
Reply

Marsh Posté le 22-03-2006 à 15:36:31    

De quelle manière puis je utiliser les types STL?
La STL est très vaste et je n'ai pas trouvé de tableaux dynamiques à 2 dimensions.

Reply

Marsh Posté le 22-03-2006 à 16:27:50    

vector de vector ? map de map ?

Reply

Marsh Posté le 09-04-2006 à 00:06:35    

thebestdave76 a écrit :

Bonjour à tous,
 
Je souhaiterai créer un tableau à 2 dimensions dont je ne connais pas la taille.
Je sais qu'il faut jouer avec les pointeurs mais je ne vois pas comment faire. J'ai écris ceci :
 
void generate(int m, int n);
{
double *VecteurAlea;  
double **MatriceAlea;
VecteurAlea=new double[n];
MatriceAlea=new double*[m];
int i;
for(i =0;i<m;i++)
  {
     for(k=0;k<n;k++)
         VecteurAlea[k]=(i+1)*k;
     MatriceAlea[i]=VecteurAlea;
  }
}
 
Mais comme MatriceAlea[] est un pointeur sur VecteurAlea, Elle n'est en fait constituée que de la dernière valeur du VecteurAlea. Si n=3 et m=2, MatriceAlea vaudra :   0 2 4 alors qu'il aurait du valoir  0 1 2
              0 2 4                                    0 2 4
 
Comment dois je procéder SVP?


 
Il vaut mieux procéder comme suit :
 
double **MatriceAlea;
 
void generate(int m, int n);
{
   MatriceAlea=new double*[m];
   for(int i=0;i<m;i++)MatriceAlea[i]=new double[n];
}
 
et pour détruire :
 
for(int i=0;i<m;i++)delete[]MatriceAlea[i];
delete[]MatriceAlea;
 

Reply

Marsh Posté le 09-04-2006 à 02:28:06    

utilise des std::vector, c'est bien mieux. vector< vector<double> > matrice;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed