据我了解,unordered_map
中的存储桶数量在填充unordered_map
时意外增加。
如果我执行unordered_map
(到另一个unordered_map
的复制),可以保证会有完全相同的对。但是它们会在同一个桶中吗?桶的数量会一样吗?
我不知道存储桶的创建机制,也没有找到简短的解释,说明它必须如何实现。但是,如果存储桶的数量可能取决于插入,分配等的顺序,那么在复制后,我们可能会获得不同数量的存储桶或其中的存储空间不同(即使项目相同)。是真的吗对于boost的实施还是gcc的标准实施?
答案 0 :(得分:3)
在复制unordered_map
时,指定要复制的最大负载因子而不是“当前”负载因子。
用于复制构造和复制分配的条目都包括以下内容
除了表64的要求之外,还复制哈希函数, 谓词和最大负载因子。
通常,这意味着可能会有不同数量的存储桶,因此副本中的元素在存储桶中的分布也不同。