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