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/

    10-12 23:26