si pienso en el plano de coordenadas x, y x, y es la notación común para un par ordenado, pero si uso una matriz de dos dígitos tengo myArray [row] [col] y row es y y col es el x. ¿Eso está al revés o solo lo estoy pensando mal? Estaba pensando que se vería como myArray [x] [y], pero eso es incorrecto si quiero filas y columnas reales (como en un tablero de juego). ¿No sería myArray [y] [x] imitar de verdad una columna de columnas? ?¿Están los atributos x, y y fila, col hacia atrás de una matriz bidimensional?
Respuesta
Lo tiene todo, y se siente un poco al revés. el número de fila es una coordenada y, y el número de columna es una coordenada x, y sin embargo usualmente escribimos fila, col pero también usualmente escribimos x, y.
Si desea escribir su matriz como [y] [x] depende o [x] [y] depende principalmente de cuánto le importa realmente el diseño en la memoria (y si lo hace, qué idioma usa) . y si desea escribir funciones/métodos que puedan operar en filas o columnas de forma aislada.
Si está escribiendo código C/C++, las matrices se almacenan en Row Major Order, lo que significa que una sola fila de datos se puede tratar como una matriz de 1 dimensión. Pero una sola columna de datos no puede. Si no recuerdo mal, VB utiliza el orden principal de la columna, por lo que los idiomas varían. Me sorprendería que C# no sea también el orden principal de la fila, pero no lo sé.
En realidad, depende de usted. No hay derecho a pensar en tu pregunta. Por ejemplo, normalmente pienso en una matriz de una dimensión como una fila de celda. Entonces, en mi opinión, es array [col] [row]. Pero realmente depende de usted ...
Si estás pensando en las consecuencias de caché, * hay * una forma correcta de verlo ... –
@mmeyers: En realidad, el efecto es que guardas el tablero de juego de lado. Es común almacenar imágenes de esta manera. – Joel
Creo que la pregunta es sin ningún contexto dado ... Por supuesto en diferentes contextos, hay diferentes lógicas. – anthares
Apuesto a que hay muchas opiniones diferentes sobre esta. En pocas palabras, en realidad no importa mientras seas consecuente. Si tiene otras bibliotecas o similares que van a utilizar los mismos datos, podría tener sentido hacer lo que sea necesario para una integración más fácil.
Si esto es estrictamente en su propio código, haga lo que le parezca cómodo. Mi preferencia personal sería usar myArray [y] [x]. Si son grandes, puede haber beneficios de rendimiento de mantener los artículos a los que va a acceder mucho al mismo tiempo. Pero no me preocuparía hasta más tarde en una etapa muy avanzada.
Bueno, realmente no, si piensas en una fila como elementos en el eje x y luego una matriz 2d es un grupo de elementos de fila en el eje y, entonces es normal usar y para operar en una fila, como ya sabes la x (para esa fila particular x es siempre la misma, es y que está cambiando con sus índices) y luego usa x para operar en los elementos de múltiples filas (las filas están apiladas verticalmente, cada una en un valor y particular)
No importa cómo almacene sus datos en la matriz ([x] [y] o [y] [x]). Lo que sí importa es que siempre recorras el conjunto de forma contigua. Una matriz bidimensional de Java es esencialmente una matriz unidimensional que almacena la segunda matriz (por ejemplo, en el caso de [y] [x] tiene una matriz larga de [y] en la que cada y contiene las matrices [x] correspondientes para esa línea de y).
Para ejecutar de manera eficiente toda la matriz, es importante acceder a los datos de manera que no tenga que realizar búsquedas continuamente en esa matriz, saltando de una matriz-y-de-xarrays a otra y- array-of-xarrays. Lo que quiere hacer es acceder a un elemento y acceder a todas las x allí antes de pasar al siguiente elemento y.
Por lo tanto, en una situación de matriz [y] [x]. siempre tienen la primera variable en el bucle exterior y el segundo en el bucle interno:
for (int ys = 0; ys < Array[y].length; ys++)
for (int xs = 0; xs < Array[y][x].length; xs++)
{
do your stuff here
}
Y, por supuesto preasignar ambos Array.lengths fuera del circuito para evitar tener que obtener los valores de cada ciclo.
- 1. ¿Por qué los parámetros de `atan2`" están hacia atrás "?
- 2. Desplazar una animación jQuery hacia atrás y hacia adelante
- 3. Valores de índice de una matriz usando fila, col indicies
- 4. iteración a través de una matriz más rápido hacia atrás y luego hacia delante
- 5. Comandos de matriz y división para crear una matriz bidimensional
- 6. push() una matriz bidimensional
- 7. Encadenamiento hacia adelante y encadenamiento hacia atrás en Java
- 8. ¿Están documentados los operadores de tubería doble hacia adelante/hacia atrás?
- 9. Git: Cómo moverse hacia atrás y hacia adelante entre confirmaciones
- 10. Administrar hacia adelante y hacia atrás en Richfaces
- 11. Cómo eliminar una fila en la matriz bidimensional
- 12. R: ¿cómo obtener los nombres de fila y columna de los elementos verdaderos de una matriz?
- 13. Foreach de Python hacia atrás
- 14. matriz de dos dimensiones para una sola dimensión y viceversa
- 15. Adelante FFT una imagen y FFT hacia atrás una imagen para obtener el mismo resultado
- 16. Internet Explorer 9 (y 10) están renderizando mis esquinas redondeadas hacia atrás
- 17. ¿Obtienes elementos adyacentes en una matriz bidimensional?
- 18. Cómo encontrar el número de fila y col de una celda en la tabla
- 19. Acerca del comportamiento de una palabra hacia delante y hacia atrás en Emacs
- 20. bucle a través de los elementos de una matriz hacia atrás
- 21. Enviando vista hacia atrás
- 22. jquery creando una matriz bidimensional
- 23. Iteración hacia atrás
- 24. Encuentra todos los pares (x, y) en una matriz ordenada para que x + y <z
- 25. Depuración hacia atrás
- 26. hacia atrás glsl compatibilidad
- 27. inicialización de una matriz bidimensional de cadenas
- 28. cómo implementar la funcionalidad atrás y hacia adelante como navegador
- 29. ¿Cómo configuro una selección hacia atrás?
- 30. Eliminar líneas hacia atrás
Me encontré haciendo la misma pregunta a mis padres. Es bueno saber que no hay un estándar. –