快速问题......散列图是STL的一部分吗?hash_map是STL的一部分吗?
回答
The STL有hash_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
,这是不相似的。
引用维基百科(强调):
从STL页:
标准模板库(STL)是包含在C++标准库中的软件库部分。
...,然后从hash_map页面
在C++编程语言,
hash_map
是在标准 模板库散列 关联容器的名称。它由 几个实现者提供,例如GNU C++编译器和Microsoft的Visual C++。 这不是C++ 标准库的一部分,但在C++ 技术报告1包含了非常 类似容器unordered_map
,这 将包含在即将到来的C++ 0x 标准。
因此,在短期,
- 是它是STL的一部分。
- 但它不是标准库的一部分。
- 但它是由几个非常流行的实现支持。
@razlebe:你不能只说是或否? – forsvarir 2011-05-06 08:13:15
@forsvarir:当然,但引用维基百科为我的答案提供了一些可信度。 ;) – razlebe 2011-05-06 08:14:03
重要的是,知道它只是适度可移植的,如果您选择使用它,那么请检查您的编译器文档以找出它所在的头文件和命名空间 - 它可能不是一个简单的'#include
否... Hash_map不是STL标准的一部分。
STL标准没有这样的东西。 – 2011-05-06 08:21:59
@AlexandreC:ISO,ANSI等没有STL标准,但没有理由不考虑STL文档(例如在sgi.com)作为其事实标准。 – 2011-05-06 08:31:19
@Alexandre C:或者有几种,取决于你对** STL **的定义。 – 2011-05-06 08:32:10
问题在于对术语STL没有商定意义。标准C++的一部分是hash_map
吗?不,它不是。然而,unordered_map
将成为新的C++标准的一部分,并且是使用散列实现的映射。
如果您定义的** STL **包含一些现成的实现,那么它可能包含'hash_map'。 – 2011-05-06 08:29:09
有一个商定的含义。只是有些人不同意。 – 2011-05-06 08:40:11
@Tomalak如果有人不同意它,那么就没有达成一致。 – 2011-05-06 08:54:46
是,hash_map
是STL的一部分。但是,它是而不是 C++ 03的标准库的一部分。
真的吗?我在C++ 0x FDIS中找不到'hash_map'。你有没有证据支持你的说法? – fredoverflow 2011-05-06 08:25:20
哦,等等,你的意思是不同的STL,没关系。 – fredoverflow 2011-05-06 08:25:57
@FredOverflow:尽管你有误解,但只有一个STL_。 – 2011-05-06 08:32:11
hash_map是STL的一部分,但不是标准C++(C++ 11)的一部分。而且还有一个类似的实现的hash_map命名为 “的std :: unordered_map” 标准C++:对编译器扩展,以及加速 http://www.cplusplus.com/reference/unordered_map/unordered_map/
目前,GNU C++和MSVC++已经实现了hash_map。同时,SGI有自己的hash_map实现。有关详细信息,请参阅http://www.sgi.com/tech/stl/hash_map.html。
- 1. STL是C++核心的一部分吗?
- 2. std :: string是STL的一部分吗?
- 3. 在Stl Hash_map中查找密钥
- 4. STL中hash_map和map之间的场景差异是什么?
- 5. 是/是boost :: const_string boost的一部分吗?
- 6. hash_map和stdext :: hash_map?
- 7. 是syscall(2)标准的一部分吗?
- 8. Interceptors&Decorators是CDI的一部分吗?
- 9. .Net Framework 4.5是System.Web.Optimization的一部分吗?
- 10. MsTest是Microsoft Build Tools的一部分吗?
- 11. redisodules是redis 4.0-rc2的一部分吗?
- 12. alloca是C++标准的一部分吗?
- 13. JCE是Java SE 6的一部分吗?
- 14. Qt3D是Qt5的一部分吗?
- 15. C++中hash_map结构的内存开销STL
- 16. 如何从STL hash_map获取所有密钥?
- 17. 是UITableViewCell的分隔符部分吗?
- 18. AIX上的hash_map?
- 19. 外部资源是程序集的一部分吗?
- 20. 不是List :: Util标准Perl分发的一部分吗?
- 21. Stroustrup的hash_map的实现是错误的?
- 22. 用一对索引STL映射是一个好主意吗?
- 23. Java - 是另一个文件路径的一部分吗?
- 24. 是一个指向STL容器安全的指针吗?
- 25. 错误:“的hash_map”不是“性病”
- 26. stl - 字符串是矢量吗?
- 27. strcpy_s是C++标准的一部分吗?或者只是MS Visual C++的一部分
- 28. 是Android Gradle DSL的isReleaseBuild()部分吗?
- 29. 是C标准的TRUE/FALSE部分吗?
- 30. 是CSS的正文部分吗?
号使用'unordered_map'。你真的需要一个哈希映射吗?如果没有看到'std :: map'是否符合你的实际需求。 – 2011-05-06 08:17:08
@Martin:'hash_map' ***是***的一部分。 – 2011-05-06 08:21:41
请定义STL。你的意思是C++标准库吗?或者你的意思是多年前发布的原始标准模板库,后来被部分采用为当前的C++标准?通常我们并不关心你是否将stl非正式地用作stdlib,但在这种情况下它很重要。标准C++没有'hash_map',STL。 (未来的C++和Boost有'unordered_map',一个哈希映射。) – GManNickG 2011-05-06 08:28:37