次の方法で共有


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(key2key1) , を返します。ここで、compTraits 型の格納されているオブジェクトを示し、オブジェクト hash_comp を構築する際に指定できます。 既定の Traits パラメーター型 less<Key> について、並べ替えキーの値が減少することはありません。

  • 整数の定数 bucket_size は、コンテナーが超えるべきでない、「バケット」(ハッシュ テーブルのエントリ) ごとの要素の平均数を指定します。 0 より大きくなければなりません。 hash_compare によって提供される値は 4 です。

  • 整数の定数 min_buckets は、ハッシュ テーブルに保持するバケットの最小数を指定します。 2 の累乗で、0 より大きくなければなりません。 hash_compare によって提供される値は 8 です。

hash_compare の宣言方法や使用方法の例については、hash_map::hash_maphash_multimap::hash_multimaphash_set::hash_setおよび hash_multiset::hash_multiset の例をご覧ください。

要件

ヘッダー:<hash_map>

名前空間: stdext

関連項目

C++ 標準ライブラリ内のスレッド セーフ
C++ 標準ライブラリ リファレンス