2012-08-16 17 views
6

new T[7] crea una matriz de 7 T s. Si reemplazamos T con int[5], obtenemos new int[5][7] que debería crear una matriz de 7 matrices de 5 enteros. Sin embargo, crea una matriz de 5 matrices de 7 enteros en su lugar. ¿Hay alguna buena razón para esto? ¿No tendría más sentido si fuera al revés?orden de las dimensiones al crear una matriz multidimensional

+3

Todos los lenguajes similares a C usan [orden mayor de fila] (http://en.wikipedia.org/wiki/Row-major_order). Fortran usa la columna principal. Piense en ello como * la dimensión más importante primero *. – Mysticial

+0

Creo que la pregunta es perfectamente apropiada, una fuente frecuente de confusión. Es una de las (muchas) razones para evitar las matrices multidimensionales 'desnudas' en C++ – sehe

+1

Cuando haces una búsqueda, los índices van en el mismo orden que las dimensiones, lo cual creo que tiene más sentido que a la inversa. –

Respuesta

1

lo pienso como dimensiones:

height width depth 
int[5] [7] [8] 

O

rows cols 
int[5] [7] 

Es por eso que tiene sentido para que sea 5 series de 7 enteros para mí. Hay una especie de orden natural.

Creo que su ejemplo también tiene sentido y es muy lógico. Así que supongo que es solo una cuestión de opinión: P

-1

int ints [][] = new int [5][7]; puede escribirse como int [] ints [] = new int [5][7]; quizás esto le dirá que tiene sentido que esas son 5 matrices de 7 enteros. ;)

+0

¿Eso es verdad? Además, no veo cómo ayuda – sehe

+0

Esta es una respuesta divertida, +1 de mí. – fredoverflow

+0

+1 gracioso. Ni siquiera puedo analizar la sintaxis. –

Cuestiones relacionadas