在 的构造函数中unordered_map
,我们可以定义分配的桶数。我原以为我可以用它来减少重新散列的时间。但是,在某些情况下,这也可能会损害性能。重新哈希发生在插入时
仅当新的元素数大于 时才会发生重新散列
max_load_factor()*bucket_count()
。如果插入成功,则在节点句柄中保存的元素的指针和引用无效,并且在提取之前获得的对该元素的指针和引用变为有效。(C++17 起)
上面的文档来自std::unordered_map
. 我猜boost是相似的?但是它的文档没有说明重新散列的条件。
如果我将存储桶计数初始化为 100,并且有一个包含所有 100 个元素的存储桶,那么在插入 101 元素之前不会发生重新散列......如果我使用默认存储桶计数,我假设它是 << 100,重新散列可以更早地发生。
如果是这样,我们什么时候要初始化桶计数?