hash_map是 STL 的一部分

Is hash_map part of the STL?

本文关键字:一部分 STL map hash      更新时间:2023-10-16

快速问题...hash_map是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的视觉对象 C++。它不是C++的一部分 标准库,但C++ 技术报告 1 包含非常 类似的容器unordered_map,其中 将包含在即将推出的 C++0x 中 标准。

所以简而言之,

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

问题是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++ 已经实现了编译器扩展和 Boost 的hash_map。同时,SGI有自己的hash_map实施方案。您可以参考 http://www.sgi.com/tech/stl/hash_map.html 了解详细信息。

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