STL是否有哈希表数据结构?

4
我使用过 TR1 的 unsorted_map。 我从未知道 STL 中的任何数据结构是哈希表。 我的同事坚称STL有哈希表,但他无法(或不愿意)为我找到。 有人能判断这个争论吗?谢谢。
3个回答

3
SGI STL(GCC基于此)确实有一个{{link1:hash_map}}实现。但这不是标准的C++。

4
这不是“the” STL,只是“一个”STL。 - Nicol Bolas
从您链接的页面上可以看到:这个类是SGI的扩展,不是C++标准的一部分。 - gnud
明白了,我已经修正了我的回答。谢谢 :) - user47322
2
@Nicol:实际上,SGI的STL是权威的STL——Stepanov和Lee在HP工作时使用了这个名字,而SGI接手了它。Dinkumware也使用了这个名字。标准将其部分内容纳入其中,并进行了一些更改。在我看来,那些将C++标准的某些部分称为“STL”的人正在制造不必要的混乱,因为标准从未声称其任何部分被称为“STL”。 - Steve Jessop
1
@Nicol:并不是每个人都这样做,STL也不等同于“C++标准库”,因为有些人在谈论“STL”时,并不打算包括iostreams或exceptions(它们不是模板),或者像<cstring>这样的头文件,虽然它们是C++标准库的一部分,但其内容并不是C++中的新内容。技术人员应该能够精确地使用技术术语,而你所知道的“每个人”都无法做到这一点。当“STL”被评估出现在英语词典中时,我们可以谈论常见用法,但在此之前,它仍然是一个技术术语 :-) - Steve Jessop
显示剩余2条评论

3

标准的C++98没有哈希映射,但是STL的许多实现(例如原始的SGI实现)都有一个hash_map类。


谢谢,我明白了。这就是原因。 :D - Josh Morrison

2
在C++0x中,有一个unordered_mapunordered_multimap,它们通常被实现为哈希映射。如果你的编译器还没有这些功能,你可以使用boost::tr1::unordered_map

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