作业帮 > 综合 > 作业

无序容器的rehash()操作后的条件bucket_count >size/max_load_factor是什么意思?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 22:39:27
无序容器的rehash()操作后的条件bucket_count >size/max_load_factor是什么意思?
见书c++primer 关联容器一章,这个条件里的size指什么?为什么是这样的条件?
这个好理解.无序容器的内部是由一个个的bucket(桶)构成的,每个bucket里面由相同hash的元素构成.因此无序容器的搜索是先根据hash值,定位到bucket,然后再在bucket里面搜索符合条件的元素.
buck_count - 就是无序容器内部bucket的数量;
size - 无序容器中总的元素数量;
max_load_factor - 就是bucket所容纳的最大平均元素的数量(可以是分数值).
『例如』:如果一个容器中有100个元素,容器中bucket的最大平均元素值是12.5,那么需要多少个桶才能完全装下这100个元素呢?100/12.5 = 8,为确保有足够的桶,bucket数量起码是>8(即最少9个).