Perl数组是一种抽象数据类型。 Perl阵列的内部机制是什么?它是用动态数组还是链接列表实现的?由于数组元素具有随机访问权限,因此我会假设一个动态的指针数组,或者对标量的引用是有道理的。但是,随着阵列头的换档和解开操作,数组是否必须使用这些操作移动其所有元素?听起来对我效率低下。任何想法?

有帮助吗?

解决方案

看看这个: http://www.perlmonks.org/?node_id=17890

(从那里取:)

Perl用数组和第一个/最后一个元素偏移来实现列表。阵列的分配比最初指向阵列中间的偏移量大于所需的要大,因此在重新分配基础阵列之前,有两个方向都有两个方向生长的空间。此实施的结果是,Perl的所有原始列表运算符(插入,获取,确定数组大小,推动,Pop,Shift,unshift等)在O(1)时间中执行。

其他提示

这些类型记录在 perlguts (看 佩尔内部 对于相关文档) - 是阵列和HV的AV。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top