有标准的C++哈希容器吗?

Joh*_*0te 4 c++ containers stl standard-library

我有各种各样的教科书,注意到最初没有一个哈希容器被整合到STL中,但大多数人还说大多数标准库实现都有某种形式的哈希容器,因为它是已知的缺陷.

这些书不一定是最新的,我对google搜索时真正"标准"的内容感到有些困惑,所以:

在这个时间点,大多数标准库实现提供了一个相当一致的哈希容器,如果是这样,它是否被认为是STL的一部分?

这个容器的"标准"标题是什么?(我猜它是#include <hash>,但以防万一!).

是否有单独定义的哈希集和哈希映射?

Set*_*gie 10

调用新的标准哈希映射容器unordered_map.您可以将其包含在您的文件中#include <unordered_map>.它是现已批准的标准C++ 11的一部分.

在C++ 11之前,你有各种各样的东西,如hash_map某些供应商所支持的(广泛?),所以你可以使用它们,但如果你这样做,你的代码就不是真正可移植的,因为hash_map它不是标准的一部分.hash_map现在不应该使用哈希表结构的所有其他供应商特定版本.


Did*_*set 6

请参阅C++ 11类型:

  • unordered_map
  • unordered_set
  • unordered_multimap
  • unordered_multiset