哈希表hash的扩容
字典dict的结构
了解hash的扩容之前,需要先了解hash的底层实现:dict。
dict所使用的哈希表由 dict.h/dictht 结构定义:
typedef struct dictht {
// 哈希表数组
dictEntry **table;
// 哈希表大小
unsigned long size;
// 哈希表大小掩码,用于计算索引值
// 总是等于 size - 1
unsigned long sizemask;
// 该哈希表已有节点的数量
unsigned long used;
} dictht;
- table 属性是一个数组, 数组中的每个元素都是一个指向 dictEntry 结构(即哈希表节点)的指针, 每个 dictEntry 结构保存着一个键值对。
- size 属性记录了哈希表的大小, 也即是 table 数组的大小, 而 used 属性则记录了哈希表目前已有节点(键值对)的数量。
- sizemask 属