hash_map是STL的一部分吗?

快速的问题…散列图是STL的一部分吗?

STL有hash_map ,但是C ++标准库没有 。

由于常见的误解 ,您可能会将C ++标准库视为“STL”,或将C ++标准库的工具链部分实现为“STL实现”。 不是这样。

MSVC ++和GCC(将hash_map作为特定于编译器的扩展)都放在std命名空间中 ,这是非常令人遗憾的,这具误导性。 *叹*

C ++ 11引入了std::unordered_map ,这是不相似的。

引用维基百科(强调增加):

从STL页面:

标准模板库(STL)是部分包含在C ++标准库中的软件库。

…然后从hash_map页面

在C ++编程语言中, hash_map 是标准模板库中散列关联容器的名称 。 它由几个实现者提供,如GNU C ++编译器和Microsoft的Visual C ++。 它不是C ++标准库的一部分 ,但C ++技术报告1包含非常类似的容器unordered_map ,它将包含在即将出现的C ++ 0x标准中。

所以总之,

  • 是的,它是STL的一部分。
  • 但它不是标准库的一部分。
  • 但它是由几个非常stream行的实现支持。

问题在于术语STL没有商定意义。 hash_map是标准C ++的一部分吗? 不,不是的。 unordered_map将成为新的C ++标准的一部分,但是,是一个使用散列实现的地图。

是的hash_map是STL的一部分。 但是,它不是 C ++ 03标准库的一部分。

hash_map是STL的一部分,但不是标准C ++(C ++ 11)的一部分。 在标准C ++中有一个名为“std :: unordered_map”的hash_map类似的实现: 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

不… Hash_map不是STL标准的一部分。