代码之家  ›  专栏  ›  技术社区  ›  Alasdair

Hashmaps:节点映射和平面映射有什么区别?

  •  0
  • Alasdair  · 技术社区  · 3 年前

    不同类型的标签有哪些,它们之间有什么区别?

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

    1 回复  |  直到 3 年前
        1
  •  5
  •   Amadan    3 年前

    Tip #136 解释得很好。

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

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