unordered_map 的副本是否具有完全相同的存储桶

Does copy of unordered_map will have exactly same buckets

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

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

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

在复制 unordered_map 时指定复制最大加载因子,而不是 "current" 加载因子。

拷贝构造和拷贝赋值的入口都包括以下内容

In addition to the requirements of Table 64, copies the hash function, predicate, and maximum load factor.

[unord.req]

一般来说,这意味着桶的数量可能不同,因此副本中的元素在桶中的分布也不同。