- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
C++ unordered_map
的rehash()
和reserve()
方法有什么区别?为什么需要两种不同的方法?
最佳答案
区别在于目的,尽管两者都在做类似的事情。
rehash
获取现有映射并重建新大小的桶,在此过程中重新哈希并将元素重新分配到新桶中。
reserve
向您保证,如果您插入的元素数量不超过保留数量,则不会进行重新散列(即您的迭代器将保持有效)。
尽管相关,但这是两个有些不同的事情。 rehash
不给你任何保证,reserve
不表达重新散列的目的。如果您认为您的 map 效率低下,请使用 rehash
,如果您准备进行大量插入,请使用 reserve
。
正如@Xeo 指出的那样,reserve
只是rehash
的包装器,不过,考虑到 map 的允许负载系数。
关于c++ - C++ unordered_map 的 rehash() 和 reserve() 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14851249/
在某些时候我们需要增加散列的大小,通常我们只是重新散列,这会导致整个散列的重新构造。 有没有更好的解决方案,当我们增加尺寸时,我们不需要重新构造整个东西? 最佳答案 你可以使用 http://en.w
我正在实现一个哈希表,而不使用任何内置的 java HashTable 功能,并收到以下行的编译时错误: newHashTable.add(reHashValueIndex, bucket.get(j
我们有一个运行着多个数据库的 MySQL 服务器,用于不同类型的数据。其中之一是 wordpress 数据库。 我可以连接正常,“显示数据库”,“使用苹果”,“使用橙子”等(用水果代替我们的实际数据库
HashMap 的文档中有这样的短语: If the initial capacity is greater than the maximum number of entries divided by
我正在使用Kibana 4在ElasticSearch上查询唯一计数。 我想prevent rehash on field,,因为该字段已经被散列了。 如何使Kibana使用"rehash": fal
我对散列和重新散列有些困惑。以下是我的理解,如有错误请指正。 从图片上看,bucket实际上是Entry类的数组,以链表的形式存储元素。每个新的键值对,其键具有与条目数组桶相同的哈希码,将作为条目对象
我不明白为什么 hastable 的 rehash 复杂度在最坏的情况下可能是二次的: http://www.cplusplus.com/reference/unordered_set/unorder
我了解 unordered_ STL 容器保留多个桶,桶的数量根据容器中元素的数量而变化。插入时,如果超过一定的限制,容器将重新散列以使用更多的桶,因此每个桶都不太满并且搜索速度更快。这会使迭代器无效
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwa
我们的数据库有很多表和很多列。命令行 mysql 客户端需要很长时间才能连接,除非我通过它 -A。我不想每次都输入它,所以我尝试添加 my.cnf 选项 no-auto-rehash。 在我必须使用
我试图让我的 Ruby 1.9.3 运行我的 Octopress 安装。 当我输入时: rbenv rehash 我遇到了一个错误: rbenv: cannot rehash: /Users/m
C++ unordered_map 的rehash() 和reserve() 方法有什么区别?为什么需要两种不同的方法? 最佳答案 区别在于目的,尽管两者都在做类似的事情。 rehash 获取现有映射
我不明白为什么它不是线性的。 关于多重集的类似问题有一个很好的答案: why hastable's rehash complexity may be quadratic in worst case 但
我正在将用户从遗留用户存储迁移到我的 ASP.NET 5.0 Web 应用程序中的 ASP.NET Identity 2.0。我有一种验证遗留哈希的方法,但我想在登录时将它们升级到 ASP.NET I
我正在尝试在安装新 gem 后重新哈希 rbenv它在我的 ubuntu 服务器上给了我这些错误 rbenv: cannot rehash: /home/deployer/.rbenv/shims/
我是一名优秀的程序员,十分优秀!