为什么C ++标准库不包含哈希表实现?

时间:2011-07-30 03:27:35

标签: c++ visual-c++ data-structures

我正在阅读我的教科书Data Structures and Algorithms: By Mark Allen Weiss,它说标准库不包含集合或映射的哈希表实现,而是编译器可以提供具有相同成员函数的hash_set和hash_map,地图类。为什么不在标准库中包含哈希实现?这本书于2006年出版,自从将这些实现添加到标准库以来,是否有任何C ++版本?

1 个答案:

答案 0 :(得分:15)

您正在寻找的内容称为std::unordered_set/map。这些是C++11的一部分,是C ++标准的下一个版本(将在几个月内完成)。它们也在2005年的技术报告1中提供,这是第一个标准和下一个标准库之间的C ++标准库的附加列表。在TR1中,它们位于std::tr1命名空间中。

Boost实际上发布了implementation of TR1(虽然您不应该使用std::tr1::shared_ptr版本,因为C ++ 11中的常规boost::shared_ptrstd::shared_ptr非常多更好)。

如果我记得,最初在C ++ 98中引入散列表的原因只是缺乏C ++标准委员会的时间。他们基本上有一个截止日期,以便运送东西,哈希表没有成功。