Pet*_*ner 3 delphi hashtable tbucketlist
我一直在使用TBucketList和TObjectBucketList来满足我所有的哈希需求,但从未体验过切换桶的数量.我依稀记得Data Structures类中的含义,但有人可能会详细阐述Delphi中这个特定类的细微差别
The following table lists the possible values: Value Number of buckets bl2 2 bl4 4 bl8 8 bl16 16 bl32 32 bl64 64 bl128 128 bl256 256
TBucketList
并TObjectBucketList
存储指针.他们使用的哈希函数简单地掩盖了地址的高位.被掩盖的位数取决于对象具有多少桶.bl2
例如,如果使用,则会屏蔽31位,并且只有一位地址确定存储区.使用时bl256
,指针的整个字节被使用.它是中间两个字节之一.权衡就是你拥有的桶数.一个桶只需要8个字节,因此拥有256个字节并不是一个巨大的成本.
除此之外,TBucketList
它只是您在数据结构类中学到的普通哈希表.
TIntegerBucketList
使用与其他哈希函数相同的哈希函数.如果您想要更复杂的哈希函数,请编写后代TCustomBucketList
并覆盖该BucketFor
方法.在您的后代类中,您还可以将受保护的BucketCount
属性指定为使用除提供的计数之外的其他内容TBucketList
.请注意,由于存储桶计数的更改,类不会重新分配项目,因此BucketCount
在项目已添加到列表后不要重新分配,除非您打算自己进行重新分配.
归档时间: |
|
查看次数: |
1250 次 |
最近记录: |