Domanda

L'array Perl è un tipo di dati astratti. Qual è il meccanismo interno per la matrice Perl? E 'implementato con array dinamico o lista collegata? Dal momento che gli elementi di matrice hanno accesso casuale, vorrei assumere una matrice dinamica di puntatori o riferimenti a scalari senso. Tuttavia, con lo spostamento ed il funzionamento non innesto alla testa di matrice, la matrice avrebbe dovuto spostare tutti i suoi elementi con queste operazioni? suono inefficiente per me. Ogni pensiero?

È stato utile?

Soluzione

Date un'occhiata a questo: http://www.perlmonks.org/?node_id=17890

(preso da lì:)

Perl implementa liste con un array e prima / ultima offset elemento. L'array è allocato più grandi del necessario con gli offset originariamente punta nel mezzo della matrice per cui v'è spazio per crescere in entrambe le direzioni (Appenna e spinge / inserti) prima di una ridistribuzione della matrice sottostante è necessaria. La conseguenza di questa implementazione è che tutti operatori di lista primitive di Perl (inserimento, il recupero, la determinazione della dimensione dell'array, spinta, pop, spostamento, unshift, ecc) eseguire in O (1).

Altri suggerimenti

I tipi sono documentati nella perlguts (vedi Perl Internals per la relativa documentazione) -. e sono AV per array e gli hash per HV

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top