Tableau dynamique a 2 dimensions
Résolu
Utilisateur anonyme
-
snakeSam Messages postés 1 Statut Membre -
snakeSam Messages postés 1 Statut Membre -
Bonjour,
est-ce que quelqu'un saurait comment allouer un tableau dynamique a deux dimensions ?
Par exemple un tableau simple peut se faire avec:
int *tab = NULL;
tab = new int[20;
Merci d'avance
est-ce que quelqu'un saurait comment allouer un tableau dynamique a deux dimensions ?
Par exemple un tableau simple peut se faire avec:
int *tab = NULL;
tab = new int[20;
Merci d'avance
8 réponses
-
Salut,
Il y a plusieurs méthodes possibles pour un tableau dynamique.
J'appelle,
ni : nombre de lignes
nc : nombre de colonnes.
- La première méthode ne pas déclarer un tableau de deux dimensions !!!
int* tableau;
tableau = new int [ ni * nc];
Après tu accède à tableau[i][j] par
tableau( i * nc + j)
Cette méthode évite de déclarer un tableau dynamique de deux dimensions mais n'est pas toujours évidente avec les indices.
Une solution est de se créer une fonction qui gère ca.
- La deuxième méthode, celle qui créé vraiment un tableau dynamique de deux dimensions
int ** tableau;
tableau = new int* [ni];
for ( int i=0 ; i < ni ; i++)
tableau[i] = new int [nc];
.
.
tableau[i][j]=...;
.
for ( int i=0 ; i < ni ; i++)
delete tableau [i];
delete tableau;
Voilà,
Personnellement j'utilise la première méthode la plupart du temps parce que je suis toujours en train d'oublier la deuxième.
Qu'elles sont les différences entre ces deux méthodes de déclarations ?
La première déclare un pointeur vers un tableau de ni * nc int qui est contigu dans la mémoire. (Pas très pratique quand on a des tableaux énormes et que la mémoire ne dispose pas d'un tel emplacement en continu ) .
La deuxième déclare un tableau de pointeur de longueur ni. Chaque pointeur de ce tableau pointe vers un tableau de int de taille nc.
J'espère que ca pourra t'aider.
Bonne programmation.