Tim*_*Tim 2 perl hash data-structures
我需要检查一组标量中是否存在标量.存储这组标量的最佳方法是什么?
遍历数组会产生线性检查时间.散列的检查时间是不变的,但是由于我不使用散列的值部分,因此感觉效率低下.
使用散列测试集合成员资格的内存开销很小,并且大大超过了通过数组重复顺序搜索的成本.有很多方法可以创建一个集合成员资格样式哈希:
my %set = map {$_ => 1} ...;
my %set; $set{$_}++ for ...;
my %set; @set{...} = (1) x num_of_items;
Run Code Online (Sandbox Code Playgroud)
这些中的每一个都允许您直接在条件中使用哈希查找,而无需任何其他语法.
如果您的哈希值很大,并且您担心内存使用情况,则可以将其存储undef
为每个键的值.但在这种情况下,你将不得不exists $set{...}
在你的条件中使用.