我正在阅读我的教科书Data Structures and Algorithms: By Mark Allen Weiss
,它说标准库不包含集合或映射的哈希表实现,而是编译器可以提供具有相同成员函数的hash_set和hash_map,地图类。为什么不在标准库中包含哈希实现?这本书于2006年出版,自从将这些实现添加到标准库以来,是否有任何C ++版本?
答案 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_ptr
和std::shared_ptr
非常多更好)。
如果我记得,最初在C ++ 98中引入散列表的原因只是缺乏C ++标准委员会的时间。他们基本上有一个截止日期,以便运送东西,哈希表没有成功。