hash_compare 类

该类模板描述了一个对象,任何哈希关联容器(hash_map、hash_multimap、hash_set 或 hash_multiset)都可将该对象用作默认的 Traits 参数对象,以对其所包含的元素进行排序和哈希处理。

语法

class hash_compare
{
   Traits comp;
   public:
   const size_t bucket_size = 4;
   const size_t min_buckets = 8;
   hash_compare();
   hash_compare(Traits pred);
   size_t operator()(const Key& key) const;
   bool operator()(
   const Key& key1,
   const Key& key2) const;
};

备注

每个哈希关联容器都存储一个 Traits 类型的哈希特征对象(模板参数)。 可以从 hash_compare 专用化中派生一个类,用于选择性地重写某些函数和对象,也可以在满足某些最低要求时提供你所拥有的该类的版本。 具体而言,对于 hash_compare<Key, Traits> 类型的对象 hash_comp,上述容器需要以下行为:

  • 对于 Key 类型的所有值 key,调用 hash_comp(key) 用作哈希函数,这将产生 size_t 类型的值的分布。 由 hash_compare 提供的函数将返回 key

  • 对于序列中位于 key2 之前且具有相同哈希值(由哈希函数返回的值)的 Key 类型的任何值 key1,hash_comp(key2key1) 为 false。 该函数必须在 Key 类型的值上施加全面排序。 由 hash_compare 提供的函数将返回 comp(key2, key1) ,,其中 comp 是构造对象 hash_comp 时可指定的 Traits 类型的存储对象。 对于默认的 Traits 参数类型 less<Key>,排序键的值永远不会减小。

  • 整数常数 bucket_size 指定容器不应尝试超过的每个“存储桶”(哈希表项)的平均元素数目。 该数目必须大于零。 由 hash_compare 提供的值为 4。

  • 整数常数 min_buckets 指定要保留在哈希表中的存储桶的最小数目。 该数目必须是 2 的幂且大于零。 Hash_compare 提供的值为 8。

示例

有关如何声明和使用 hash_compare 的示例,请参阅 hash_map::hash_maphash_multimap::hash_multimaphash_set::hash_sethash_multiset::hash_multiset 的示例。

要求

标头:<hash_map>

命名空间: stdext

另请参阅

C++ 标准库中的线程安全
C++ 标准库参考