Frage

Der Perl-Array ist ein abstrakter Datentyp. Was ist der interne Mechanismus für den Perl-Array? Ist es mit dynamischen Arrays oder verkettete Liste implementiert? Da die Array-Elemente mit wahlfreiem Zugriff haben, würde ich ein dynamisches Array von Zeigern übernehmen, oder Verweise auf Skalare Sinn machen. Jedoch mit Schicht- und unshift Betrieb an der Spitze der Anordnung, müßte das Array alle seine Elemente mit diesen Operationen bewegen? klingen ineffizient zu mir. Jeder Gedanke?

War es hilfreich?

Lösung

Haben Sie einen Blick auf diese: http://www.perlmonks.org/?node_id=17890

(genommen von dort:)

Perl implementiert Listen mit einem Array und erste / letzte Element Offsets. Das Array ist größer zugeteilt als nötig mit dem Versatz in der Mitte des Feldes ursprünglich zeigen, so gibt es Raum in beiden Richtungen zu wachsen (unshifts und Schübe / Einsätze) vor einer Neuzuweisung des zugrunde liegenden Array erforderlich. Die Folge dieser Implementierung ist, dass alle primitiven Operatoren Liste der Perl (Insertion, Abrufen, Bestimmen Feldgrße, push, pop, Verschiebung, unshift, etc.) führen in O (1) Zeit.

Andere Tipps

sind die Typen in der perlguts (siehe Perl Internals für die zugehörige Dokumentation.) - und sind AV für Arrays und HV für Hashes

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top