English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Matriz en dientes de C#

El array en dientes es un array de arrays. El array en dientes almacena arrays en lugar de valores literales. Por ejemplo, una matriz bidimensional es un array unidimensional de elementos idénticos, pero el array en dientes, cada uno de los arrays tiene un número diferente de elementos.

El array en dientes se inicializa con dos corchetes [ ]. El primer corchete especifica el tamaño del array, el segundo corchete especifica el tamaño del array que se almacenará.

El siguiente ejemplo declara un array en dientes.

int[][] jArray1 = new int[2]; // puede contener dos arrays unidimensionales 
int[][,] jArray2 = new int[3][,]; // puede contener tres matrices bidimensionales

En el ejemplo anterior, jArray1Se pueden almacenar hasta dos arrays unidimensionales. jArray2Se pueden almacenar hasta tres matrices bidimensionales, el array [ ] especifica la matriz bidimensional.

int[][] jArray = new int[2]; 
jArray[0] = new int[3]{1, 2, 3};
jArray[1}= new int[4]{4, 5, 6, 7 };

También puedes inicializar el array en dientes en la declaración, como se muestra a continuación.

int[][] jArray = new int[2]{
                new int[3]{1, 2, 3},
                new int[4]{4, 5, 6, 7}
            };
jArray[0][0]; //Retorno1
jArray[0][1]; //Retorno2
jArray[0][2]; //Retorno3
jArray[1][0]; //Retorno4
jArray[11]; //Retorno5
jArray[12]; //Retorno6
jArray[13]; //Retorno7

Puedes usar dos bucles for para acceder a un array en dientes, como se muestra a continuación.

int[][] jArray = new int[2]{
                new int[3]{1, 2, 3},
                new int[4]{4, 5, 6, 7}
            };
for(int i=0; i<jArray.Length; i++)
{
	for(int j=0; j < (jArray[i]).Length; j++)
		Console.WriteLine(jArray[i][j]);
}

La siguiente matriz de arreglos en dientes almacena matrices bidimensionales, donde el segundo paréntesis [ ] representa una matriz bidimensional.

int[][,] jArray = new int[2][,];
jArray[0] = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 };
jArray[1}= new int[2, 2] { { 7, 8 }, { 9, 10 }; 
jArray[0][1, 1]; //Retorno4
                                             
jArray[11, 0]; //Retorno9
                                             
jArray[11, 1]; //Retorno10

Si añades otro paréntesis, entonces es un array de arrays.

int[][][] intJaggedArray = new int[2]] 
                            {
                                new int[2}][]  
                                { 
                                    new int[3] { 1, 2, 3},
                                    new int[2] { 4, 5} 
                                },
                                new int[1}][]
                                { 
                                    new int[3] { 7, 8, 9}
                                }
                            };
Console.WriteLine(intJaggedArray[0][0][0]); // 1
Console.WriteLine(intJaggedArray[0][11]); // 5
    
Console.WriteLine(intJaggedArray[1][0][2]); // 9

En el ejemplo de matriz entrelazada anterior, tres corchetes[][][] representan una matriz de matrices. Por lo tanto, intJaggedArray contendrá dos elementos, lo que significa dos matrices. Ahora, cada matriz también contiene una matriz (unidimensional). intJaggedArray[0][0][0] apunta al primer elemento de la primera submatriz. intJaggedArray[1][0][2]] Señala el tercer elemento de la segunda submatriz. La siguiente imagen lo ilustra.

Arreglo dentado