User Tools

Site Tools


class:kernel:tcomplexhash

TComplexHash

Inherited from NULL

Inherited by NULL

Friend class HashIterator,HashCleaner,

Description

TComplexHash与THash类似,用于管理索引比较复杂的数据,这些数据的数字标识并不唯一,但是和辅助标识一起组成唯一的数据单元。TComplexHash管理的数据除了必须提供数字标识的接口外,还需要提供判断数据相等的接口。对TComplexHash的数据遍历须用ComplexHashIterator。TComplexHash的数据储存方式与THash一样,数据在BIT的位置仍然由数字标识确定。

Members

Public interface

Private interface

  • void erase(LinkNode * pNode)

LinkNode * m_pHashLinkTable

Hash基本索引表,Hash的节点为LinkNode类型

ulong m_ulCount

节点的总个数

ulong m_ulModNumber

用于取模运算的模数,也是节点基本表的大小,一般为质数

MemPool * m_pHashPool

当添加一个引起索引冲突的节点时,该节点的空间由该内存池分配

bool m_bSelfPool

内存池来源于外部指定,则为false,若由自己创建,则为true


TComplexHash(ulong hashSize,MemPool *pMemPool=0)

  • function: 构造TComplexHash对象
  • parameters:
    1. [i]ulong hashSize: 期望的hash的节点规模,取值范围下限大于0,上限取决于内存空间大小。hashSize决定了m_ulModNumber的值(比m_ulHashSize/2大的质数)
    2. [i]MemPool * pMemPool = 0: 从外部指定用于分配节点空间的内存池,默认为不从外部指定,即为NULL
  • return value: 无

bool insert(T * pData)

  • function: 将数据pData插入到TComplexHash中
  • parameters:
    1. [i]T *pData: 插入的数据
  • return value: 若插入成功则返回true,若插入失败或者数据已在hash中返回false

void remove(T * pData)

  • function: 将数据T从TComplexHash中删除
  • parameters:
    1. [i]T * pData: 需要删除的数据,该指针并不一定是TComplexHash中的数据,但是它必须保证数据标识和辅助数据与删除目标一致。
  • return value: 无

void clear()

  • function: 重置基本索引表为空白状态,释放由内存池分配的节点空间,如果内存池是自行创建,重置内存池
  • parameters: NULL
  • return value: 无

void resize(ulong newSize)

  • function:
  • parameters: 重新设置TComplexHash的大小,并将原Hash的数据添加到新的TComplexHash中
    1. [i]ulong newSize: TComplexHash的新的容量
  • return value: 无

T * getData(T *pData)

  • function: 在TComplexHash中获取与数据T一致1)的原始数据
  • parameters:
    1. [i]T *pData: 需要检索的参考数据,与目标数据一致
  • return value: 若TComplexHash中有匹配的数据,则返回数据的地址,否则返回NULL

ulong getCount()

  • function: 获取节点总数
  • parameters: NULL
  • return value: 节点总数

ulong getSize()

  • function: 获取TComplexHash表的大小
  • parameters: NULL
  • return value: TComplexHash基本索引表的长度

void setIterator(Iterator * pIter)

  • function: 绑定遍历迭代器
  • parameters:
    1. [i]Iterator * pIter:遍历迭代器的指针,该指针必须有效
  • return value: 无
1)
数字标识与辅助标识均相同
class/kernel/tcomplexhash.txt · Last modified: 2020/06/20 22:43 (external edit)