哈希表和C++中的STL map有何区别?

10

我正在尝试学习C++中的映射(maps)。只是想知道STL map的实现方式。据我所知,它使用二叉搜索树。

  1. STL中是否有哈希表的实现?

  2. STL map如何存储键值对?

3个回答

13

典型的STL实现基于红黑树。C++ TR1提供了std::tr1::unordered_map,它使用哈希表实现。Boost还提供了一个unordered_map哈希表的实现。

C++11现在有std::unordered_map


3
MSVC有stdext::hash_map,gcc有__gnucxx::hash_map,当然在C++0x中,TR1的unordered_map将移动到std命名空间。 - kennytm

1
  1. 一些库实现了stdext::hash_map,它几乎具有与std::map相同的接口,但使用哈希表而不是二叉树。

  2. 二叉树节点按键在树中排列,并且每个键都有一个值附加,可以整体存储在同一节点中,也可以作为指针存储。


0
键值对存储在一个std::pair中。它是一个模板化的结构体;一个名为first的元素存储键,一个名为second的元素存储值。一些信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接