是否存在具有O(log(n))访问时间的基于树的有序键值存储的“规范”(纯)perl实现?
我试过在CPAN上搜索“树”,但是没有太多的洞察力。
This question激励我发布自己的文章。
编辑:所以这个问题没有明确说明。我正在寻找的是一个几乎不会执行%hash操作的存储,但是以更差的算法复杂度为代价来维护其密钥的顺序。到目前为止我所知道的具有这种属性的所有结构都基于某种树(B树,红黑树等),因此标题。
这是我想看到的伪代码示例:
my $set = Some::Module->new();
$set->store( foo=>1 );
$set->store( bar=>2 );
$set->fetch( "foo" ); # 1
$set->keys(); # bar, foo and not foo, bar
$set->keysBetween( undef, "baz" ); # bar only
答案 0 :(得分:3)
use Tie::IxHash;
tie my %myhash, 'Tie::IxHash';
for ( my $i=0; $i<20; $i++ ) {
$myhash{$i} = 2*$i;
}
my @keys = keys %myhash;
# @keys = (0,1,2,3,...)
<强>描述强>
此Perl模块实现了保留订单的Perl哈希值 其中添加了哈希元素。订单不受影响 与
IxHash
中现有键对应的值已更改。该 元素也可以设置为任意提供的顺序。熟悉的 perl数组操作也可以在IxHash上执行。
如果此模块没有切断芥末,请尝试在CPAN上搜索“tie hash order”。
答案 1 :(得分:2)
请参阅Tree
。