Is hash_map part of the STL?

Yes, hash_map is part of the STL. However, it is not part of C++03's standard library.


The problem is that there is no agreed upon meaning for the term STL. Is hash_map part of Standard C++? No, it isn't. unordered_map will be part of the new C++ standard, however, and is a map implemented using hashing.


The STL has hash_map, but the C++ Standard Library does not.

Due to a common misconception, you may think of the C++ Standard Library as "the STL", or of parts of your toolchain's implementation of the C++ Standard Library as "an STL implementation".

It is not.

It is also a great shame that both MSVC++ and GCC (which implement hash_map as a compiler-specific extension), place it in the std namespace, which is not only highly misleading, but also illegal per the standard. *sigh*

C++11 has introduced std::unordered_map, which is not dissimilar.


Quoting Wikipedia (emphasis added):

From the STL page:

The Standard Template Library (STL) is a software library partially included in the C++ Standard Library.

...and then from the hash_map page

In the C++ programming language, hash_map is the name of a hashed associative container in the Standard Template Library. It is provided by several implementors, such as the GNU C++ compiler and Microsoft's Visual C++. It is not part of the C++ Standard Library, but the C++ Technical Report 1 contains the very similar container unordered_map, which will be included in the upcoming C++0x standard.

So in short,

  • YES it's part of the STL.
  • But it IS NOT part of the standard library.
  • But it is supported by several very popular implementations.

Tags:

C++

Stl

Hashmap