快速提问...... hash_map是STL的一部分吗?
答案 0 :(得分:102)
The STL有hash_map
,但是C ++标准库does not。
由于a common misconception,您可能会将C ++标准库视为“STL”,或者将工具链的C ++标准库实现的部分视为“STL实现”。
不是。
MSVC ++和GCC(实现hash_map
作为特定于编译器的扩展)place it in the std
namespace同样令人遗憾,这不仅具有高度误导性,而且对于标准而言也是非法的。 *叹*
C ++ 11引入了std::unordered_map
,这并不相同。
答案 1 :(得分:15)
引用维基百科(重点补充):
来自STL页面:
标准模板库(STL)是C ++标准库中包含的部分软件库。
...然后从hash_map页面
在C ++编程语言中,
hash_map
是哈希的名称 标准中的关联容器 模板库。它由提供 几个实现者,例如GNU C ++编译器和Microsoft的Visual C ++。 它不是C ++的一部分 标准库,但是C ++ 技术报告1包含了 类似的容器unordered_map
,其中 将包含在即将推出的C ++ 0x中 标准。
简而言之,
答案 2 :(得分:7)
问题在于 STL 这个术语没有达成共识。 hash_map
是标准C ++的一部分吗?不,不是。但是,unordered_map
将成为新C ++标准的一部分,并且是使用散列实现的映射。
答案 3 :(得分:5)
是 ,hash_map
是STL的一部分。但是, 不是 是C ++ 03标准库的一部分。
答案 4 :(得分:2)
hash_map是STL的一部分,但不是标准C ++(C ++ 11)的一部分。并且有一个类似的hash_map实现名为" std :: unordered_map"在标准C ++中: http://www.cplusplus.com/reference/unordered_map/unordered_map/
目前,GNU C ++和MSVC ++已经为编译器扩展实现了hash_map,以及Boost。同时,SGI有自己的hash_map实现。有关详细信息,请参阅http://www.sgi.com/tech/stl/hash_map.html。
答案 5 :(得分:-2)
否...... Hash_map不是STL标准的一部分。