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

teh*_*man 8 c++ visual-c++ data-structures

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

Nic*_*las 15

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

Boost实际上提供了TR1实现(虽然你不应该使用该std::tr1::shared_ptr版本,因为常规boost::shared_ptrstd::shared_ptrC++ 11更好,更好).

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