hash_map是STL的一部分吗?

时间:2011-05-06 08:10:46

标签: c++ stl hashmap

快速提问...... hash_map是STL的一部分吗?

6 个答案:

答案 0 :(得分:102)

The STLhash_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中   标准。

简而言之,

  • 它是STL的一部分。
  • 但它不是标准库的一部分。
  • 但它得到了几个非常流行的实现的支持。

答案 2 :(得分:7)

问题在于 STL 这个术语没有达成共识。 hash_map是标准C ++的一部分吗?不,不是。但是,unordered_map将成为新C ++标准的一部分,并且是使用散列实现的映射。

答案 3 :(得分:5)

hash_mapSTL的一部分。但是, 不是 是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标准的一部分。