hash_map是STL的一部分吗?

Jak*_*ake 59 c++ stl hashmap

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

Lig*_*ica 103

STLhash_map,但C++标准库没有.

由于常见的误解,您可能会将C++标准库视为"STL",或者将C++标准库的工具链实现的一部分视为"STL实现".它不是.

MSVC++和GCC(hash_map作为特定于编译器的扩展实现)将它放在std命名空间中也是一个很遗憾,这是非常误导的.*叹*

C++ 11已经推出std::unordered_map,但并没有什么不同.


raz*_*ebe 16

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

STL页面:

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

...然后从hash_map页面

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

简而言之,

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

  • @forsvarir:当然,引用维基百科可以为我的答案带来一些可信度.;) (3认同)
  • @forsvarir:这里很难.OP的问题必须以"是"回答,但OP的预期问题应该以"否"回答...... (3认同)
  • @razlebe:你不能只是说是或否? (2认同)

小智 7

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

  • @James:请回去再次阅读我的评论,好像它被一个巨大的笑脸所包围. (5认同)
  • 有一个商定的含义.只是有些人不同意. (4认同)

Ale*_* C. 5

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

  • @FredOverflow:尽管你有误解,但只有一个STL_. (4认同)
  • @Tomalak你(或任何其他单身人士)可以决定一个词的含义; 意义是通过共识确定的.如果只是你和我在一起讨论事情,我们会达成共识 - 我也知道其他几个人也同意它(例如Bjarne Stroustrup).在这样一个开放的论坛中,我们必须考虑到整个社群的共识,并且遗憾的是,在**STL**的情况下,没有一个,所以我们必须更明确才能成为肯定被理解. (4认同)