unordered_map哈希冲突,哈希扩容,扩容时访问与插入?
链表法:
扩容:
其实与Redis类似,链表法解决哈希冲突,扩容就是当负载因子>1时,新开一个buckets,大小为>num_element的下一个质数,并遍历原来的buckets将原来的元素rehash迁移到新的buckets中。迁移完成后把tmp表换成buckets表即可。
如果扩容期间插入或查询,和redis一致,插入直接插入tmp表,查询先查原来的表,再查tmp表。
建议看看《redis设计与实现》的dict部分,说的更详细,还有渐进式rehash的优化。