【发布时间】:2020-09-04 03:57:47
【问题描述】:
Hashmap 只是一种使用自平衡二叉搜索树实现的数据结构,具有(键,值)对。因此,如果我们将字符串视为我们的键,那么仅通过比较字符串值来实现树的平衡/构造。
例如:(Ab, 1) (Aa,1)
这里的树构造是通过将 Ab 和 Aa 比较为字符串而不是某个散列值来进行的。
那么散列(函数)什么时候发生?还是只是以hashmap的名义,hashmap里面没有真正的hash?
【问题讨论】:
-
什么是“hashmap”,C++标准库中没有这样的类。
std::map通常实现为树,std::unordered_map是哈希表实现。 -
这是一个通用的计算机科学问题,而不是一个编程问题;专门针对术语而不是解决问题的问题;我希望通过教科书或网络搜索更好地回答。
-
正如一些程序员老兄提到的,C++ 标准库中没有这样的东西。
hash_map实际上是 STL 的一部分(此类是 SGI 扩展;它不是 C++ 标准的一部分。)您在此处编写的描述(工作,使用 RB 树)是的std::map。散列图确实涉及“散列”。您可以对“hashmap 的内部实现”进行简单的网络搜索。它将显示java.util.HashMap的结果。但这与在 STL 中实现的数据结构相似。 -
'Hashmap 只是一种使用自平衡二叉搜索树实现的数据结构,具有(键,值)对':不,不是。你的问题是基于一个错误的前提。