Вопрос

Массив Perl - это абстрактный тип данных. Какой внутренний механизм для массива Perl? Это реализовано с динамическим массивом или связанным списком? Поскольку элементы массива имеют произвольный доступ, я бы предположил динамический массив указателей или ссылки на скаляры имеют смысл. Тем не менее, с сдвигом и ненезименной операцией во главе массива, ли массив должен перемещать все свои элементы с этими операциями? Звучит неэффективно для меня. Любая мысль?

Это было полезно?

Решение

Посмотри на это: http://www.perlmonks.org/?node_id=17890.

(взято оттуда :)

Perl реализует списки списков с массивом и первым / последним элементом смещений. Массив выделяется больше, чем необходимо с помощью смещений, изначально указывающих в середине массива, поэтому есть место для расти в обоих направлениях (не имеет возможности, и толкает / вставки / вставки) до того, как необходимо переопределение базового массива. Следствием этой реализации является то, что все первобытные операторы списка Perl (вставка, выборка, определение размера массива, толчок, поп, сдвиг, без мошенничество и т. Д.) Выполните время O (1).

Другие советы

Типы документированы в перлгуты (видеть Перл внутренние Для соответствующей документации) - и являются AV для массивов и HV для хэшей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top