📜  C++ STL中的unordered_multimap rehash()函数(1)

📅  最后修改于: 2023-12-03 14:59:46.914000             🧑  作者: Mango

C++ STL中的unordered_multimap rehash()函数

在C++ STL中的unordered_multimap容器中,rehash()函数可以用于重新设置容器的桶数量。

语法
void rehash(size_type n);

参数n表示新的桶数量,如果当前容器中的元素数量大于新的桶数量,则函数会自动调整桶的数量以保证装载因子小于等于最大装载因子。

使用示例
#include <iostream>
#include <unordered_map>

int main() {
    std::unordered_multimap<int, int> um;
    for (int i = 1; i <= 10; ++i) {
        um.insert({i, i});
    }
    std::cout << "当前桶的数量:" << um.bucket_count() << std::endl;
    
    um.rehash(20);
    
    std::cout << "新桶的数量:" << um.bucket_count() << std::endl;
    
    return 0;
}

输出结果:

当前桶的数量:11
新桶的数量:23
注意事项

使用rehash()函数需要注意以下事项:

  1. 该函数会使迭代器、引用和指针失效,因为rehash()会改变容器内部的结构。
  2. 如果设置的新桶数量小于等于当前元素数量,则函数会抛出std::length_error异常。
  3. 设置桶数量的大小建议为一个质数,以避免出现哈希冲突。
总结

unordered_multimap容器的rehash()函数可以用于重置容器的桶数量,使容器内部的存储结构更加合理,提高查询和插入速度,但需要注意函数会使迭代器、引用和指针失效。