Tableau dynamique a 2 dimensions
Résolu/Fermé
Utilisateur anonyme
-
6 févr. 2008 à 18:30
snakeSam Messages postés 1 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 2 novembre 2013 - 2 nov. 2013 à 11:32
snakeSam Messages postés 1 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 2 novembre 2013 - 2 nov. 2013 à 11:32
A voir également:
- Java tableau 2 dimensions dynamique
- Tableau croisé dynamique - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
- Jeux java itel football - Télécharger - Jeux vidéo
- Tableau ascii - Guide
8 réponses
kshx2
Messages postés
5
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
12 février 2008
22
7 févr. 2008 à 20:14
7 févr. 2008 à 20:14
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.
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.
16 mai 2012 à 15:21
delete [] tableau[i];
et
delete [] tableau;
2 nov. 2013 à 11:32