Inherited from NULL
Inherited by NULL
Friend class HashIterator
Description
存储管理数据地址,使用取模的Hash运算快速定位数据地址。
Hash由基本索引表(Base Index Table,以下简称BIT)和一个用于分配Hash节点的内存池组成,基本索引表的长度表征了Hash的大小。Hash节点(LinkNode)包含两个指针,其中一个指向数据,另一个指向下一个节点。由Hash定位的数据需要提供一个函数(IdGetter)以获取唯一标识它的整型数,将此整型数对基本索引表的长度取模,得到的余数就是该数据在Hash中的索引。原则上该数据的地址存在基本索引表余数对应的位置上,如果有两个数据拥有相同的索引,则将所有的同索引的数据链结起来形成一个链表,除了存放在基本索引表的节点外,其他节点都存储在内存池中。
为了减小数据冲突,基本索引表的大小应选择适合的质数。
为了避免嵌套的遍历过程所导致的冲突,对Hash数据的遍历引入到HashIterator完成。
Members
Public interface
see THash