hash_map是STL的一部分吗?

问题描述 投票:57回答:6

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

c++ stl hashmap
6个回答
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,它没有什么不同。


15
投票

引用维基百科(重点补充):

来自STL页面:

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

...然后从hash_map页面

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

简而言之,

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

7
投票

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


5
投票

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


2
投票

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


-2
投票

否...... Hash_map不是STL标准的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.