c++ - HashMap : What's the difference between a node map and a flat map?

标签 c++ hashmap

哈希表有哪些不同类型以及它们之间的区别?

我经常看到对“节点图”和“平面图”类型的引用。 Abseil 库有这两种实现,但没有解释不同的用例是什么,Google 搜索也没有显示任何描述。

最佳答案

Tip #136解释得很好。

简而言之:一个 Abseil 平面 map 有一个桶数组,直接存储 map 条目。节点映射存储指向映射条目的指针。 (这两种类型显然都使用开放寻址策略。)值得注意的是,在平面 map 中,即使是空桶也会占用空间;在节点映射中,它们只占用一个指针的内存。

最后,请注意术语“平面映射”,尤其是在 C++ 世界之外,通常保留用于收集将函数应用于子序列的每个元素的结果的函数,这是一个非常不同的含义。

关于c++ - HashMap : What's the difference between a node map and a flat map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67223835/

相关文章:

c++ - 需要避免在需要使用链接器脚本 *.ld 文件的静态库中对 `WinMain' 的 undefined reference

java - HashMap 中的键条目为空字符串或 null

multithreading - 在线程之间传递 hashmap 的 channel |陷入循环 | rust

Grails 动态渲染 map-injected g :select

c# - 从 Windows API 返回的消息

c++ - 将磁盘文件的一部分放入特定(预分配)内存地址的最快方法 Windows/C++?

java - Java String hashCode是如何计算对象的

java - 字符串缓冲区 : Adding a newline after a certain amount of words for formatting

c++ - 为什么 C++ 映射不作为尝试实现?

c++ - 包含 Windows 上可能存在或不存在的 header