Question

Le tableau Perl est un type de données abstrait. Quel est le mécanisme interne pour le tableau Perl? Est-il mis en œuvre avec un tableau dynamique ou d'une liste liée? Étant donné que les éléments du tableau ont un accès aléatoire, je suppose un tableau dynamique de pointeurs ou des références à donner un sens scalaires. Cependant, avec le décalage et le fonctionnement unshift à la tête du tableau, le tableau serait que de déplacer tous ses éléments avec ces opérations? son inefficacité pour moi. Toute pensée?

Était-ce utile?

La solution

Jetez un oeil à ceci: http://www.perlmonks.org/?node_id=17890

(prise à partir de là:)

Perl implémente des listes avec un tableau et premier / dernier décalages d'éléments. Le tableau est alloué plus que nécessaire avec les décalages pointant vers l'origine au milieu du tableau donc il y a de place pour grandir dans les deux sens (unshifts et / inserts) Pousse avant une nouvelle répartition du tableau sous-jacent est nécessaire. La conséquence de cette mise en oeuvre est que tous les opérateurs de la liste de primitives (perl d'insertion, l'extraction, la détermination de la taille de l'ensemble, poussée, pop, décalage, unshift, etc.) effectuer en O (1) heure.

Autres conseils

Les types sont documentés dans le perlguts (voir Perl Internes pour la documentation connexe) -. et sont AV pour les tableaux et haute tension pour hash

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top