hashtable作为unordered_set和unordered_map的底层数据结构,是隐藏起来的,正常不会直接用到它,但要理解好unordered_set和unordered_map,需要先理解好hashtable
hashtable的底层数据结构是vector,vector中的元素是链表
vector代表篮子,初始化大小为53(GNU的做法),存的是结点指针
元素放进来的时候,会经过一个hash函数,找到对应的篮子,然后连在篮子的后面
当放进去的元素的数量超过vector的长度的时候,就会执行rehashing:
vector的大小会先变大为2倍,但不一定是2倍,会变成2倍左右的一个素数
vector变大后,原先的每一个元素都需要重新用hash函数计算并放到对应的篮子里