是否unrdered_map的副本将具有完全相同的bucket

Does copy of unordered_map will have exactly same buckets

本文关键字:bucket unrdered map 副本 是否      更新时间:2023-10-16

据我所知,在填充unordered_map时,unordered_map中的桶数量意外增加。

如果我执行unordered_map(到另一个unordered_map(的复制,则可以保证会有完全相同的对。但他们会在同一个桶里吗?水桶的数量会相同吗?

我不知道bucket的创建机制,也没有找到简短的解释,即它必须如何在标准中实现。但是,如果存储桶的数量可能取决于插入、分配等的顺序,那么在复制之后,我们可能会得到不同数量的存储桶,或者不同的分布(即使项目相同(。这是真的吗?boost的实现和gcc的标准实现?

复制unordered_map时,指定的是最大负载系数,而不是"当前"负载系数。

副本构建和副本分配的条目都包括以下

除了表64的要求外,还复制了散列函数,谓词和最大负载因子。

[unord.req]

一般来说,这意味着可能存在不同数量的桶,从而在副本中将元素不同地分布到桶中。