venant d'un arrière-plan Perl, j'ai toujours défini un tableau 2D en utilisant int [] [] code>. Je sais que vous pouvez utiliser
int [] code> à la place, quels sont les différences? P>
9 Réponses :
int [] [] est une matrice de tableaux ou "déchiquetées": vous pouvez l'utiliser lorsque vous souhaitez différentes tailles dans la deuxième dimension. Par exemple, la première sous-maquette peut avoir 5 éléments et la seconde peut avoir 42. P>
int [] est un tableau à deux dimensions: la deuxième dimension est la même à travers la matrice. Avec INT [7, 42] La deuxième dimension est de 42 pour toutes les 7 lignes. P>
A pris les mots de ma bouche.
La différence ici est que le premier échantillon, int [] [] crée un Array Jagged , tandis que la seconde crée un Array Rectangulaire A > (de dimension 2). Dans un tableau déchiqueté, chaque "colonne" peut être d'une taille différente. Dans un véritable réseau multidimensionnel, chaque "colonne" (dans une dimension) est la même taille. Pour plus d'informations complètes, voir le section de tableau du Guide de programmation C # . P>
essentiellement int [] [] est un tableau "déchiqueté", il ressemble à ceci: p> tandis [] est un tableau multidimenté. qui a toujours la même largeur et la même hauteur: p> chacun a ses utilisations en fonction de ce que vous essayez d'accomplir. p> p>
Jagged - chaque "rangée" peut avoir des longueurs de "colonne" différentes. Multidimensionnelle - chaque "rangée" a la même longueur de "colonne".
int [] [] est une matrice déchiquetée, où INT [] est un tableau à deux dimensions.
clairement p> Permet de disposer d'une matrice Ceci: p> où comme avec int [], vous devez toujours avoir la deuxième partie de la matrice être la même: P> var a = int[2,2];
a[0,0]
a[0,1]
a[1,0]
a[1,1]
int [] [] est appelé un tableau INT [] est appelé Array rectangulaire fort>, où toutes les lignes ont la même longueur. Il peut être simulé par le premier. p>
Une chose à considérer sur une matrice déchiquetée est que vous allociez des morceaux de mémoire non contigus. C'est une bonne chose si vous avez un grand nombre de grands objets. J'ai vu quelque chose [N, N] Créer des problèmes Stackoverflow, mais quelque chose [n] [n] est ok. p>
Également, si un objet obtient> 85 000 octets, il va à la LOH (gros tas d'objets). Collections .NET et le grand heap objet (LOH) < / p>
Le meilleur moyen de comprendre la différence est de regarder deux façons de créer une matrice NXN:
const int n = 8, m = 8; int[,] matrix1 = new int[n,m]; int[][] matrix2 = new int[n][]; for (int i = 0; i < matrix2.Length; i++) { matrix2[i] = new int[m]; } matrix1[1,1] = matrix2[2][2];
vous pouvez voir Int [] [] quant à (int []) [] (int []) est un objet p>
Voici quelques pensées en termes de performance: Stackoverflow.com/Questtions/168897/...