为什么 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 树,尽管它们是最常见的实现)。跳过列表会起作用。

以上是为什么 C STL 不提供 hashtable 和 union 数据结构?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>