gpt4 book ai didi

delphi - 如何判断TBucketList的桶数

转载 作者:行者123 更新时间:2023-12-03 15:49:19 26 4
gpt4 key购买 nike

我一直在使用 TBucketList 和 TObjectBucketList 来满足我的所有哈希需求,但从未尝试过切换存储桶的数量。我依稀记得这在数据结构类中意味着什么,但是有人可以详细说明 Delphi 中这个特定类的细微差别

The following table lists the possible values:Value   Number of bucketsbl2   2bl4   4bl8   8bl16     16bl32     32bl64     64bl128   128bl256   256

最佳答案

TBucketListTObjectBucketList 存储指针。他们使用的哈希函数只是屏蔽了地址的高位。有多少位被屏蔽取决于对象有多少个桶。例如,如果您使用 bl2,则 31 位将被屏蔽,并且地址中只有一位确定存储桶。对于bl256,将使用指针的整个字节。它是中间两个字节之一。权衡只是你拥有的桶的数量。一个存储桶仅占用 8 个字节,因此拥有 256 个存储桶并不是一个巨大的成本。

除此之外,TBucketList 只是一个普通的哈希表,就像您在数据结构类中了解到的那样。

TIntegerBucketList 使用与其他函数相同的哈希函数。如果您想要更复杂的哈希函数,请编写 TCustomBucketList 的后代并重写 BucketFor 方法。在您的后代类中,您还可以分配 protected BucketCount 属性以使用 TBucketList 提供的计数以外的其他内容。请注意,由于存储桶计数发生变化,该类不会尝试重新分配项目,因此在将项目添加到列表后,请勿重新分配 BucketCount,除非您打算进行重新分配你自己。

关于delphi - 如何判断TBucketList的桶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/547879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com