Pregunta

La matriz de Perl es un tipo de datos abstractos. ¿Cuál es el mecanismo interno para la matriz de Perl? Se implementa con la matriz dinámica o lista enlazada? Dado que los elementos de la matriz tienen acceso aleatorio, asumiría una matriz dinámica de punteros o referencias a los escalares sentido. Sin embargo, con el cambio y la operación unshift a la cabeza de serie, sería la matriz tiene que mover todos sus elementos con estas operaciones? sonar ineficiente para mí. ¿Cualquier pensamiento?

¿Fue útil?

Solución

Tener un vistazo a esto: http://www.perlmonks.org/?node_id=17890

(tomado de allí:)

Perl implementos listas con una matriz y primero / último desplazamientos del elemento. La matriz se asigna grande de lo necesario con las compensaciones que apunta originalmente en el medio de la matriz de modo que hay espacio para crecer en ambas direcciones (unshifts y empuja / insertos) antes de una reasignación de la matriz subyacente es necesario. La consecuencia de esta implementación es que todos los operadores de la lista de primitivas de Perl (inserción, ir a buscar, la determinación de tamaño de la matriz, empujar, pop, cambio, unshift, etc.) realizar en O (1) tiempo.

Otros consejos

Los tipos están documentados en la perlguts (ver Perl Internos para la documentación relacionada) -. y son AV para arrays y HV para hashes

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top