关于hash类关联容器的底层实现

有关hash类的关联容器有:

hash_set,hash_map,hash_multiset,hash_multimap这四类。它们的底层实现方法为hashtable,并且哈希表底层通过开链法实现。

开链法和开地址法:

开链法即(开散列):相对于闭散列所解决hash冲突的优势。

闭散列(开地址法):最大的局限性就是空间利用率低。

采用开链法的原因:

开链法可以使载荷因子为1。每个链上都挂常数个数据,并且其开的空间使按素数个数据,并且其开的空间是按素数个依次往后开的空间,当因子为1时,就可以扩容了,即_size = _tables.size()。存放桶元素用vector容器(因为vector本身具有动态扩容能力。vectior容器大小为一个质数大小,每次扩容的时候总是将容器大小设定为第一个大于当前需要的新容器大小的质数值)。

猜你喜欢

转载自blog.csdn.net/zryoo_k/article/details/89295953
今日推荐