快速問題......散列圖是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