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标准的一部分。