hash_map Class
[!メモ]
この API は、互換性のために残されています。代わりに unordered_map クラスです。
各要素が値は一意であるおよび関連データ値を持つ並べ替えキー ペアであるコレクションからデータをすぐに格納および取得します。
template <
class Key,
class Type,
class Traits=hash_compare<Key, less<Key> >,
class Allocator=allocator<pair <const Key, Type> >
>
class hash_map
パラメーター
Key
hash_mapに格納される主要なデータ型。型
hash_mapに格納される要素のデータ型。Traits
2個の関数オブジェクトを含む型、クラスの相対位置1はディレクティブと型 size_tの符号なし整数、要素のキー値を割り当てる単項の述語であるハッシュ関数を判断するには、並べ替えキーとして2要素の値を比較するできる比較します。このオプションを省略すると、hash_compare<は, less<を調整します> [>] が既定の設定を調整します。Allocator
hash_mapのメモリの割り当てと解放に関する詳細をカプセル化する、格納されたアロケーター オブジェクトを表す型。このオプションを省略すると、既定値は主allocator<pair <const 型**> [>]です。
解説
hash_mapは次のとおりです:
サポートする可変サイズのコンテナーが関連するキー値に要素の値の有効な検索基づいて、連想コンテナー。
要素にアクセスするには、双方向反復子を提供するため、実行する。
要素が要素のキー値に適用されたハッシュ関数の値に基づいてバケットにグループ化されるため、ハッシュ。
要素に一意キーを持つ必要があるという意味で一意です。
要素のデータ値がとは異なるキー値であるため、二つの連想コンテナー。
用意されている機能とテンプレート クラスは、一般的に、要素またはキーとして含まれるデータの種類とは無関係です。代わりに要素とキーに使用するデータ型は比較関数とアロケーターとともにクラス テンプレートのパラメーターとして指定されます。
並べ替えのハッシュの主な利点はより効率です。; 正常なハッシュはコンテナー要素の数値の対数に比例した並べ替え手法の時刻と比較して定数平均時間に挿入、削除、および検索を実行します。hash_mapの要素の値が、関連するキー値が、直接変更することはできません。代わりに、古い要素に関連付けられているキー値が削除される挿入新しい要素に関連付ける必要があり、新しいキー値。
コンテナー種類は、検索およびアプリケーションで必要な挿入の型に共通に基づきます。ハッシュされた連想コンテナーは、検索、挿入、削除操作のために最適化されています。メンバー関数し、明示的に処理をサポートする平均有効である定数にコンテナー内の要素数に依存しない、実行時にユーザーが適切にデザインされたハッシュ関数で使用された場合。優れた設計のハッシュ関数は独立したキー値が同じハッシュ値にマップされるとハッシュ値の一様分布を生成し、競合が発生すると呼ばれる競合の数を最小限にします。最悪の場合、最も悪く可能なハッシュ関数と、操作の数は、シーケンス (線形時間内の要素数に比例します。
hash_mapはキーと値を関連付ける条件が満たされたときにアプリケーションでオプションを連想コンテナー必要があります。この構造体の型のモデルを定義を提供する関連付けられた文字列値で一意に示すキーワードの順序付きリストです。代わりに、Wordに、複数の適切なシグネチャがある場合は、キーが一意ではないものとして、hash_multimapは、選択コンテナーです。一方、は、単語のリストだけが格納されている場合、hash_setは、適切なコンテナーです。Wordの複数の出現が許可された場合、hash_multisetは、適切なコンテナー構造です。
hash_mapは、クラス value_compareのハッシュ [Traits] に格納されたオブジェクトを呼び出して制御するシーケンスの順序を指定します。このメンバー関数は、格納されているオブジェクト key_compを呼び出すことによってアクセスできます。このような関数オブジェクトは、クラス hash_compare*<Key, less<Key>>*のオブジェクトと同様に動作する必要があります。具体的には、**[キー]**型のすべての値 _Key の場合、呼び出し [Traits] (_Key) は size_t型の値の分布を生成します。
通常、要素は上でのみ、あまりこの順序を設定することである必要があります: または (という意味でいずれも他より小さくない) 等しいことが、任意の2種類の要素は、いずれかの決定されるそのほか未満であること。これは、不一致要素間の順序で発生します。テクニカル ノートで、比較関数は、標準の数値は厳密弱順序を引き起こすバイナリ述語です。バイナリ述語 f (xのY) は2個の引数のオブジェクトが true または falseのx半径と y、および戻り値を持つ関数オブジェクトです。hash_mapに適用される順序は2種類のオブジェクトが同等であるとx半径とyと、f (x、y) 、および f (y) のx が falseで定義されている厳密な厳密にバイナリ述語がirreflexive称、オブジェクト、および中間かどうか、およびOrders等価性が中間の場合は。等価性、命令合計になるキーの置換の間の等価より強力な状態が (すべての要素が互いに関連する注文されるという意味で) と一致するキー互いindiscernibleです。
被制御シーケンスの要素の実際の順序はコンテナー オブジェクトに格納されているハッシュ テーブルのハッシュ関数、関数、および命令の現在のサイズによって決まります。ハッシュ テーブルの現在のサイズを特定できません。被制御シーケンスの要素の順序を予測ため、通常はできません。要素を挿入する反復子を無効にしない要素を削除し、削除した要素に明確に指定した反復子だけが無効になります。
hash_mapのクラスによって提供された反復子は、双方向反復子ですが、クラスのメンバー関数 挿入 と hash_map にテンプレート パラメーターとして機能の要件が双方向の反復子クラスによって保証されます。これらは最小限である、弱い入力反復子を受け取るバージョンがあります。さまざまな反復子の概念は、機能の調整に関連するファミリを形成します。各反復子の概念に条件の独自のセット、反復子の種類によって提供される要件にそれらを指定する必要の制限を前提として使用するアルゴリズムがあります。オブジェクトを参照するように入力反復子が逆参照される可能性があることが、シーケンスの次の反復子に増加する可能性があることを想定される場合があります。これは、最小限の機能ですが、クラスのメンバー関数のコンテキストで反復子 _First、[_Last) の範囲について有意に話せますには十分です。
Visual C++ .NET 2003では、<hash_map> と <hash_set> ヘッダー ファイルのメンバーはstdの名前空間に存在しなくなりましたが、ではなくstdextの名前空間に型。詳細については、「The stdext Namespace」を参照してください。
コンストラクター
を構築します hash_map 空の場合、または他に、hash_mapの全体または一部のコピーである。 |
Typedef
hash_map のオブジェクトの allocator のクラスを表す型。 |
|
hash_mapの const の要素を読み取ることができる双方向反復子を提供する型。 |
|
hash_mapの const の要素へのポインターを提供する型。 |
|
const の要素への参照を提供する型は const 操作を読み取りと操作実行のために格納されている hash_map |
|
hash_mapの const の要素を読み取ることができる双方向反復子を提供する型。 |
|
要素間の範囲の hash_map の要素数を表すことができる符号付き整数型は、反復子が指す。 |
|
読み取ることができるか、または hash_mapの要素を変更する双方向反復子を提供する型。 |
|
hash_mapの要素は2個の相対位置を決定するディレクティブには、2とおりの並べ替えキーを比較できる関数オブジェクトを提供する型。 |
|
型は hash_mapの各要素を構成する並べ替えキー オブジェクトを表します。 |
|
データ型を表す型は hash_mapに格納されている |
|
hash_mapの要素へのポインターを提供する型。 |
|
要素への参照を提供する型は hash_mapに格納されている |
|
読み取り可能であり、逆順の hash_mapの要素を変更する双方向反復子を提供する型。 |
|
hash_mapの要素数を表すことができる符号なし整数の型。 |
|
hash_mapディレクティブの相対位置を特定するために、並べ替えキーとして2個の要素を比較できる関数オブジェクトを提供する型。 |
メンバー関数
指定されたキー値を持つ hash_map の要素を検索します。 |
|
hash_mapの最初の要素を指定する反復子を返します。 |
|
hash_mapの最初の要素を指す定数反復子を返します。 |
|
hash_mapに最後の要素の次の場所を指す定数反復子を返します。 |
|
hash_mapのすべての要素を消去します。 |
|
キーがパラメーター指定したキーに一致する hash_map の要素数を返します。 |
|
逆順の hash_mapの最初の要素を指す定数反復子を返します。 |
|
逆順の hash_mapに最後の要素の次の場所を指す定数反復子を返します。 |
|
hash_mapに構築された要素を挿入します。 |
|
配置ヒントを含む hash_mapに、構築された要素を挿入します。 |
|
hash_map が空かどうかをテストします。 |
|
hash_mapに最後の要素の次の場所を指定する反復子を返します。 |
|
反復子のそれぞれ、指定したキー、キーの hash_map の最初の要素への参照と、キー、キーの hash_map の最初の要素へのペアを返します。 |
|
指定した位置から hash_map の要素または要素範囲を削除します |
|
指定したキーと同じキーを持つ hash_map の要素の位置を指定する反復子を返します。 |
|
hash_mapの構築に使用される allocator オブジェクトのコピーを返します。 |
|
hash_mapに要素または要素範囲を挿入します。 |
|
その以内で指定されたキーよりも大きいキー値を持つ hash_map の最初の要素への反復子を返します。 |
|
その以内で指定されたキーよりも大きいキー値を持つ hash_map の最初の要素への反復子を返します。 |
|
hash_mapの最大長を返します。 |
|
逆順の hash_mapの最初の要素を指定する反復子を返します。 |
|
逆順の hash_mapに最後の要素の次の場所を指定する反復子を返します。 |
|
hash_mapの要素数を返します。 |
|
2 hash_map、.の要素を交換します。 |
|
指定したキーよりも大きいキー値と hash_map の最初の要素への反復子を返します。 |
|
hash_mapで使用されている順序の要素の値の比較のオブジェクトのコピーを取得します。 |
演算子
指定されたキー値を持つ hash_map に要素を挿入します。 |
|
別の hash_mapのコピーと hash_map の要素を置き換えます。 |
必要条件
ヘッダー: <hash_map>
名前空間: のstdext