Массив Perl представляет собой абстрактный тип данных. Каков внутренний механизм для массива Perl? Он реализован с помощью динамического массива или связанного списка? Поскольку элементы массива имеют произвольный доступ, я бы предположил динамический массив указателей, или ссылки на скаляры имеют смысл. Тем не менее, при операции сдвига и смещения в начале массива массив должен будет перемещать все его элементы с помощью этих операций? звук неэффективен для меня. Любая мысль?Как реализованы массивы в Perl?
17
A
ответ
23
Посмотрите на это: http://www.perlmonks.org/?node_id=17890
(взятый оттуда :)
Perl реализует списки с массивом и первые/последние смещения элементов. Массив распределяется больше, чем необходимо, с смещениями, первоначально указывающими в середине массива, поэтому есть место для роста в обоих направлениях (unshifts и push/inserts) до того, как потребуется перераспределение базового массива. Следствием этой реализации является то, что все операторы примитивного списка perl (вставка, выборка, определение размера массива, push, pop, shift, unshift и т. Д.) Выполняются в O (1) раз.
6
Типы задокументированы в perlguts (см. Perl Internals для соответствующей документации) - и являются AV для массивов и HV для хешей.
Смежные вопросы
- 1. Как реализованы массивы javascript?
- 2. Как реализованы массивы в java?
- 3. Как примитивные массивы реализованы в java?
- 4. Как ассоциативные массивы реализованы в PHP?
- 5. Как динамические массивы реализованы в C++?
- 6. Как реализованы действия Perl Catalyst?
- 7. Суффиксные массивы в perl?
- 8. Являются ли массивы javascript фактически реализованы как массивы?
- 9. Как реализованы Perl -T и -B?
- 10. Как сравнить массивы в Perl?
- 11. Срезанные массивы в Perl
- 12. Perl массивы в массивах?
- 13. Perl массивы в memcached
- 14. Расщепление массивы в Perl
- 15. Почему массивы не реализованы как хэши с числовыми ключами?
- 16. Доступ Массивы в Perl хэши
- 17. C-подобные массивы в perl
- 18. Perl Сортировка Хэш Массивы
- 19. Perl: Анонимные многомерные массивы
- 20. Как создавать динамические массивы в Perl
- 21. Как вы сортируете параллельные массивы в Perl?
- 22. Как создать массивы и хэши в Perl?
- 23. Как создать многомерные массивы в Perl?
- 24. Как объединить массивы псевдонимов в Perl?
- 25. Есть ли у Perl массивы?
- 26. Perl: функция соединения и массивы
- 27. Комбинирование 2 ссылочные массивы в Perl
- 28. Массивы и отрицательные индексы в Perl
- 29. Объединить скалярные ссылки на массивы в Perl
- 30. как ptrace реализованы в ARM
Спасибо за ссылку. Это отвечает на мой вопрос. –