10

Tengo una matriz de matrices 2D. Por ejemplo, es como:¿Cómo inicializar una matriz de matrices 2D?

{{{0, 0, 1}, {1, 0, 0}} 
{{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
{{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}} 

Pero Si escribo

int [,][] arrays={{{0, 0, 1}, {1, 0, 0}} 
        {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
        {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}; 

el compilador se quejará "; esperada".

Si escribo

int [,][] arrays={new int[,] {{0, 0, 1}, {1, 0, 0}} 
        new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
        new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}; 

el compilador se quejará

"Se espera que un inicializador de matriz anidada".

Entonces, ¿por qué sucede esto y cuál es la forma correcta de inicialización?

Respuesta

20

Usted está tratando de crear matriz escalonada. Su matriz tiene n filas por lo que su primer cuadrado debe ser [] no [,]. El elemento en cada fila (índice de n) es una matriz 2D, por lo que debe usar [,]. Finalmente, puede solucionar su problema mediante el cambio int [,][] al int[][,].

int[][,] arrays = { 
    new int[,] {{0, 0, 1}, {1, 0, 0}}, 
    new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}}, 
    new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}} 
}; 
+0

Agrego 'new int [,] []' al principio pero el error sigue ahí. – ziyuang

+0

Ahh, veo su problema, he agregado el código de corrección de su ejemplo. – Ekk

+0

Funciona ~ Pensé que 'int [,] 'es un tipo, por lo que la matriz de este tipo sería' int [,] [] '. ¿Por que es esto entonces? – ziyuang

2

una matriz de matrices 2D es una matriz 3d:

int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } }; 

también ver más en MSDN http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspx

+1

Pero eso hace que el índice más externa fija, que se desprende de su pregunta que no quiere que fija – Dani

+0

Una matriz 3D también requiere que se proporcionen los 3 índices, lo que resulta en un número entero, mientras que el autor de la pregunta desea índice y volver una matriz 2d. – dapi

Cuestiones relacionadas