C++ rehash()
的reserve()
和unordered_map
方法之间有什么区别?为什么需要两种不同的方法?
最佳答案
尽管两者都在做类似的事情,但目的是不同的。
rehash
可以使用现有 map 并重建新大小的存储桶,在过程中重新哈希化并将元素重新分配到新的存储桶中。 reserve
向您保证,如果您插入的元素数量不超过保留的数量,则不会进行任何哈希处理(即,迭代器将保持有效)。 这是两件事,尽管有些相关。
rehash
不提供任何保证,并且reserve
不表达重新哈希的目的。如果您认为 map 效率低下,请使用rehash
;如果您准备进行大量插入操作,请使用reserve
。正如@Xeo所指出的,考虑到 map 的允许负载因子,
reserve
只是rehash
的包装。关于c++ - C++ unordered_map的rehash()和reserve()方法之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14851249/