为什么 C STL 不提供 hashtable 和 union 数据结构? | 珊瑚贝

Why C++ STL does not provide hashtable and union data structures?


在很多地方,我读到 STL 不提供哈希表和联合数据结构。如何使用其他现有的 STL 数据结构来实现这些?

  • 您可能对 C 中的 hashmap 实现感兴趣:epsilon-delta.net/code/hashmap.html
  • 联合结构是什么意思 – 与常规 union 不同?
  • 另请参阅stackoverflow.com/questions/2460387/hash-table-v-s-stl-map-i??n-c


尝试使用 std::tr1::unordered_map 作为您的哈希映射。 std::map 是有序的,因此它的效率不如哈希。不确定联合数据结构是什么意思,但您可以在 C

中使用联合结构

编辑:此外,有些人已经完成了许多其他哈希映射的实现。 Boost 有一张无序地图,Prasoon 在问题评论中提到了一张,Google 有 sparsehash。


试试 std::map 来满足你的哈希表需求…

  • std::map 实际上是二叉树,而不是哈希表。正如 SB 所说, unordered_map 是一个哈希表。 (从技术上讲,该标准没有指定如何实现地图,但该标准指定的约束暗示了二叉树——这当然是最常见的实现)
  • 这是基于树的,并且具有与哈希表不同的性能特征(查找是树的对数时间,而不是哈希表的常数时间)。 C 0x 基于散列表引入了unordered_map。某些实现可能提供 hash_map,它是原始 STL 的一部分,但未包含在标准库中。
  • 实际上,std::map 要求并不意味着二叉树(当然也不是红黑树或 AVL 树,尽管它们是最常见的实现)。跳过列表会起作用。


来源:https://www.codenong.com/3101185/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?