| 
                         hashtable哈希表可以实现O(1)复杂度的读写操作,因此效率很高。源码如下: 
- typedef struct dict {  
 -  // 类型特定函数  
 -  dictType *type;  
 -  // 私有数据  
 -  void *privdata;  
 -  // 哈希表  
 -  dictht ht[2];  
 -  // rehash 索引  
 -  // 当 rehash 不在进行时,值为 -1  
 -  int rehashidx; /* rehashing not in progress if rehashidx == -1 */  
 -  // 目前正在运行的安全迭代器的数量  
 -  int iterators; /* number of iterators currently running */  
 -  } dict;  
 -  typedef struct dictht {  
 -  // 哈希表数组  
 -  dictEntry **table;  
 -  // 哈希表大小  
 -  unsigned long size;  
 -  // 哈希表大小掩码,用于计算索引值  
 -  // 总是等于 size - 1  
 -  unsigned long sizemask;  
 -  // 该哈希表已有节点的数量  
 -  unsigned long used;  
 - } dictht;  
 - typedef struct dictEntry {  
 -  void *key;  
 -  union {void *val;uint64_t u64;int64_t s64;} v;  
 -  // 指向下个哈希表节点,形成链表  
 -  struct dictEntry *next;  
 -  } dictEntry;  
 -  typedef struct dictType {  
 -  // 计算哈希值的函数  
 -  unsigned int (*hashFunction)(const void *key);  
 -  // 复制键的函数  
 -  void *(*keyDup)(void *privdata, const void *key);  
 -  // 复制值的函数  
 -  void *(*valDup)(void *privdata, const void *obj);  
 -  // 对比键的函数  
 -  int (*keyCompare)(void *privdata, const void *key1, const void *key2);  
 -  // 销毁键的函数  
 -  void (*keyDestructor)(void *privdata, void *key);  
 -  // 销毁值的函数  
 -  void (*valDestructor)(void *privdata, void *obj);  
 - } dictType; 
 
  
上面源码可以简化成如下结构: 
                          (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |