2011-07-30 40 views
8

我正在阅读我的教科书Data Structures and Algorithms: By Mark Allen Weiss,它说标准库不包含集合或映射的哈希表实现,而是编译器可以为集合和映射类的相同成员函数提供hash_set和hash_map。为什么不把hash实现包含在标准库中呢?这本书是在2006年发布的,自从将这些实现添加到标准库之后,是否对C++进行了修改?为什么C++标准库不包含哈希表实现?

+0

我知道马克个人很棒:D,很可能他们没有被包含在图书馆里,因为他们只会被内部使用。编译器也更容易优化它们。 –

+0

你是什么意思只能在内部使用?这真的很棒,你从哪里知道他的? – tehman

+0

他是我参加学校的首席人员之一。而内部使用,我的意思是它们可能是针对特定于代码的库进行优化的尼古拉斯可能有一个观点。 –

回答

15

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

升压实际船舶的implementation of TR1(虽然你不应该使用std::tr1::shared_ptr版本,在常规boost::shared_ptrstd::shared_ptr C++ 11的好得多)。

如果我回想起来,哈希表最初并没有在C++ 98中引入的原因简直就是C++标准委员会缺乏时间。他们基本上有一个截止日期为了运送的东西,哈希表没有做到这一点。

+1

这些也是自2005年以来作为TR1库扩展提供的。 – Blastfurnace

+0

那真是一种不幸。但是,谢谢!来自维基百科:“在C++标准库中包含散列表(无序关联容器)是最经常发生的请求之一。” – tehman

+0

@Blastfurnace:注意。谢谢。 –