La matriz de Perl es un tipo de datos abstracto. ¿Cuál es el mecanismo interno para la matriz de Perl? ¿Se implementa con una matriz dinámica o una lista vinculada? Dado que los elementos de la matriz tienen acceso aleatorio, asumiría una matriz dinámica de punteros, o las referencias a escalares tienen sentido. Sin embargo, con la operación shift y unshift en la cabecera de la matriz, ¿la matriz tendría que mover todos sus elementos con estas operaciones? me parece ineficiente. ¿Cualquier pensamiento?¿Cómo se implementan las matrices en Perl?
Respuesta
Tener un vistazo a esto: http://www.perlmonks.org/?node_id=17890
(tomado de allí :)
Perl implementa listas con una matriz y primeros/compensaciones último elemento. La matriz se asigna más grande de lo necesario con los desplazamientos que originalmente apuntan en el medio de la matriz, por lo que hay espacio para crecer en ambas direcciones (desviaciones y empujes/inserciones) antes de que sea necesaria una reasignación de la matriz subyacente. La consecuencia de esta implementación es que todos los operadores de listas primitivas de Perl (inserción, recuperación, determinación del tamaño del array, push, pop, shift, unshift, etc.) se ejecutan en O (1) tiempo.
Los tipos están documentados en perlguts (consulte Perl Internals para obtener documentación relacionada), y son AV para matrices y HV para hash.
- 1. ¿Cómo se implementan las matrices en Java?
- 2. ¿Las matrices de JavaScript realmente se implementan como matrices?
- 3. ¿Cómo se implementan las matrices asociativas en PHP?
- 4. ¿Cómo se implementan las enumeraciones en Java?
- 5. ¿Cómo se implementan las expresiones regulares en .NET?
- 6. ¿Cómo se implementan las referencias débiles?
- 7. Mecanografía implícita de matrices que implementan interfaces
- 8. ¿Cómo se pasan las matrices?
- 9. ¿Cómo se implementan las categorías en el Objetivo C?
- 10. Cómo se implementan las funciones de la biblioteca en Haskell
- 11. ¿Cómo se implementan las clases en los compiladores
- 12. ¿Cómo se implementan las consolas de depuración en Python?
- 13. ¿Cómo se implementan las listas en Haskell (GHC)?
- 14. ¿Cómo puedo comparar matrices en Perl?
- 15. Crear matrices dinámicamente en Perl
- 16. ¿Cómo puedo crear matrices multidimensionales en Perl?
- 17. ¿Cómo se comparan las fechas en Perl?
- 18. ¿Perl detecta matrices?
- 19. Matrices de matrices dentro de Perl
- 20. ¿Cómo se usan las matrices débiles?
- 21. ¿Se implementan las variables de CSS en cualquier navegador moderno?
- 22. ¿Por qué las matrices en .net solo implementan IEnumerable y no IEnumerable <T>?
- 23. ¿Cómo se obtienen múltiples argumentos en las funciones de Perl?
- 24. ¿Cómo puedo concatenar matrices de alias en Perl?
- 25. ¿Cómo se implementan los C# Generics?
- 26. ¿Por qué las matrices multidimensionales C# no implementan IEnumerable <T>?
- 27. javascript internals: cómo se implementan los eventos?
- 28. ¿Cómo se implementan los bloques try/catch?
- 29. ¿Cómo se implementan los analizadores DOM?
- 30. ¿Cómo se implementa la longitud en las matrices de Java?
Gracias por el enlace. Responde mi pregunta –