次の方法で共有


hash_set Class

[!メモ]

この API は、互換性のために残されています。代わりに unordered_set クラスです。

コンテナー クラスのhash_setは、標準テンプレート ライブラリ(STL)の拡張機能に含まれる要素の値が、一意キー値として使用され、コレクションのデータの格納とクイック検索に使用されます。

template <
   class Key, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<Key> 
>
class hash_set

パラメーター

  • Key
    hash_setに格納される要素のデータ型。

  • Traits
    2個の関数オブジェクトを含む型、相対位置ディレクティブと型 size_tの符号なし整数、要素のキー値を割り当てる単項の述語であるハッシュ関数を判断するには、並べ替えキーとして2要素の値を比較する、バイナリ述語であるクラスの1は比較します。このオプションを省略すると、hash_compareの*<Key、less<Key> は>* 既定値です。

  • Allocator
    hash_setのメモリの割り当てと解放に関する詳細をカプセル化する、格納されたアロケーター オブジェクトを表す型。このオプションを省略すると、既定値は allocator*<Key>*です。

解説

hash_setは次のとおりです:

  • サポートする可変サイズのコンテナーが関連するキー値に要素の値の有効な検索基づいて、連想コンテナー。さらに、要素の値がキー値であるため、単純な連想コンテナーです。

  • 要素にアクセスするには、双方向反復子を提供するため、実行する。

  • 要素が要素のキー値に適用されたハッシュ関数の値に基づいてバケットにグループ化されるため、ハッシュ。

  • 要素に一意キーを持つ必要があるという意味で一意です。hash_setは、単純な連想コンテナーであるため、要素も一意です。

  • 用意されている機能、テンプレートのクラスはジェネリック、要素またはキーとして含まれるデータの種類とは無関係です。代わりに要素とキーに使用するデータ型は比較関数とアロケーターとともにクラス テンプレートのパラメーターとして指定されます。

並べ替えのハッシュの主な利点はより効率です。; 正常なハッシュはコンテナー要素の数値の対数に比例した並べ替え手法の時刻と比較して定数平均時間に挿入、削除、および検索を実行します。セット内の要素の値を直接変更することはできません。代わりに、古い値を削除し、新しい値を持つ要素を挿入する必要があります。

コンテナー種類は、検索およびアプリケーションで必要な挿入の型に共通に基づきます。ハッシュされた連想コンテナーは、検索、挿入、削除操作のために最適化されています。メンバー関数し、明示的に処理をサポートする平均有効である定数にコンテナー内の要素数に依存しない、実行時にユーザーが適切にデザインされたハッシュ関数で使用された場合。優れた設計のハッシュ関数は独立したキー値が同じハッシュ値にマップされるとハッシュ値の一様分布を生成し、競合が発生すると呼ばれる競合の数を最小限にします。最悪の場合、最も悪く可能なハッシュ関数と、操作の数は、シーケンス (線形時間内の要素数に比例します。

hash_setはキーと値を関連付ける条件が満たされたときにアプリケーションでオプションを連想コンテナー必要があります。hash_setの要素は、独自の並べ替えキーとして一意、機能です。この構造体の型のモデルは、Wordが一度だけ発生する可能性のある単語を順序付けた一覧です。Wordの複数の出現が許可された場合、hash_multisetは、適切なコンテナー構造です。値が一意キー単語のリストにアタッチする必要がある場合hash_mapは、このデータを含む適切な構造です。代わりに、キーは一意であるhash_multimapは、選択コンテナーです。

hash_setは value_compare型のハッシュ [Traits] に格納されたオブジェクトを呼び出して制御するシーケンスの順序を指定します。このメンバー関数は、格納されているオブジェクト key_compを呼び出すことによってアクセスできます。このような関数オブジェクトはクラス*のhash_compareKey<、less<Key> >のオブジェクトと同様に動作する必要があります。*具体的には、とKeyの型のすべての値 _Key、呼び出しの特性 (_Key) は、型のsize_tの値の分布を生成します。

通常、要素は上でのみ、あまりこの順序を設定することである必要があります: または (という意味でいずれも他より小さくない) 等しいことが、任意の2種類の要素は、いずれかの決定されるそのほか未満であること。これは、不一致要素間の順序で発生します。テクニカル ノートで、比較関数は、標準の数値は厳密弱順序を引き起こすバイナリ述語です。バイナリ述語 f (xy) は2個の引数オブジェクトがtrueまたはfalseのx半径とy、および戻り値を持つ関数オブジェクトです。hash_setに適用される順序は2種類のオブジェクトが同等であるとx半径と y と、f (xy) 、および f (y) の x が false で定義されている厳密な厳密にバイナリ述語がirreflexive称、オブジェクト、および中間かどうか、およびOrders等価性が中間の場合は。等価性、命令合計になるキーの置換の間の等価より強力な状態が (すべての要素が互いに関連する注文されるという意味で) と一致するキー互いindiscernibleです。

被制御シーケンスの要素の実際の順序はコンテナー オブジェクトに格納されているハッシュ テーブルのハッシュ関数、関数、および命令の現在のサイズによって決まります。ハッシュ テーブルの現在のサイズを特定できません。被制御シーケンスの要素の順序を予測ため、通常はできません。要素を挿入する反復子を無効にしない要素を削除し、削除した要素に明確に指定した反復子だけが無効になります。

hash_setのクラスによって提供された反復子は、双方向反復子ですが、クラスのメンバー関数 挿入hash_set にテンプレート パラメーターとして機能の要件が双方向の反復子クラスによって保証されます。これらは最小限である、弱い入力反復子を受け取るバージョンがあります。さまざまな反復子の概念は、機能の調整に関連するファミリを形成します。各反復子の概念に条件の独自のセット、反復子の種類によって提供される要件にそれらを指定する必要の制限を前提として使用するアルゴリズムがあります。オブジェクトを参照するように入力反復子が逆参照される可能性があることが、シーケンスの次の反復子に増加する可能性があることを想定される場合があります。これは、最小限の機能ですが、クラスのメンバー関数のコンテキストで反復子_First、[ _Last) の範囲について有意に話せますには十分です。

Visual C++ .NET 2003では、<hash_map><hash_set> ヘッダー ファイルのメンバーはstdの名前空間に存在しなくなりましたが、ではなくstdextの名前空間に型。詳細については、「The stdext Namespace」を参照してください。

1t4xas78.collapse_all(ja-jp,VS.110).gifコンストラクター

hash_set

を構築します hash_set 空の場合、または他に、hash_setの全体または一部のコピーである。

1t4xas78.collapse_all(ja-jp,VS.110).gifTypedef

allocator_type

hash_set のオブジェクトの allocator のクラスを表す型。

const_iterator

hash_setの const の要素を読み取ることができる双方向反復子を提供する型。

const_pointer

hash_setの const の要素へのポインターを提供する型。

const_reference

const の要素への参照を提供する型は const 操作を読み取りと操作実行のために格納されている hash_set

const_reverse_iterator

hash_setの const の要素を読み取ることができる双方向反復子を提供する型。

difference_type

要素間の範囲の hash_set の要素数を表すことができる符号付き整数型は、反復子が指す。

iterator

読み取ることができるか、または hash_setの要素を変更する双方向反復子を提供する型。

key_compare

hash_setの要素は2個の相対位置を決定するディレクティブには、2とおりの並べ替えキーを比較できる関数オブジェクトを提供する型。

key_type

hash_set の要素として並べ替えキーとして、容量が格納されているオブジェクトを表す型。

ポインター

hash_setの要素へのポインターを提供する型。

参照

要素への参照を提供する型は hash_setに格納されている

reverse_iterator

読み取り可能であり、逆順の hash_setの要素を変更する双方向反復子を提供する型。

size_type

hash_setの要素数を表すことができる符号なし整数の型。

value_compare

2個の関数オブジェクトを提供する型、相対位置ディレクティブと要素のハッシュ単項の述語を確認するに hash_set の2種類の要素の値を比較できるクラスのバイナリ述語は比較します。

value_type

hash_set の要素として値として、容量が格納されているオブジェクトを表す型。

1t4xas78.collapse_all(ja-jp,VS.110).gifメンバー関数

begin

hash_setの最初の要素を指定する反復子を返します。

hash_set::cbegin

hash_setの最初の要素を指す定数反復子を返します。

hash_set::cend

hash_setに最後の要素の次の場所を指す定数反復子を返します。

clear

hash_setのすべての要素を消去します。

count

キーがパラメーター指定したキーに一致する hash_set の要素数を返します。

hash_set::crbegin

逆順の hash_setの最初の要素を指す定数反復子を返します。

hash_set::crend

逆順の hash_setに最後の要素の次の場所を指す定数反復子を返します。

hash_set::emplace

hash_setに構築された要素を挿入します。

hash_set::emplace_hint

配置ヒントを含む hash_setに、構築された要素を挿入します。

empty

hash_set が空かどうかをテストします。

End

hash_setに最後の要素の次の場所を指定する反復子を返します。

equal_range

指定したキー、キーの hash_set の最初の要素と等しい、より大きいキーまたはキーの hash_set の最初の要素のペアの各反復子を返します。

消去する

hash_set の要素または要素範囲を指定位置から削除するか、指定したキーに一致する要素を削除します。

find

指定したキーと同じキーを持つ hash_set の要素の位置を指定する反復子を返します。

get_allocator

hash_setの構築に使用される allocator オブジェクトのコピーを返します。

挿入

hash_setに要素または要素範囲を挿入します。

key_comp

hash_setで使用されている順序のキーに比較オブジェクトのコピーを取得します。

lower_bound

その以内で指定されたキー、キーの hash_set の最初の要素への反復子を返します。

max_size

hash_setの最大長を返します。

rbegin

逆順の hash_setの最初の要素を指定する反復子を返します。

rend

逆順の hash_setに最後の要素の次の場所を指定する反復子を返します。

size

hash_setの要素数を返します。

swap

2 hash_set、.の要素を交換します。

upper_bound

その以内で指定されたキー、キーと hash_set の最初の要素への反復子を返します。

value_comp

ハッシュの特性のコピーを取得します hash_setの要素のキー値をハッシュ化、並べ替えに使用される取得します。

1t4xas78.collapse_all(ja-jp,VS.110).gif演算子

hash_set::operator=

別の hash_setのコピーと hash_set の要素を置き換えます。

必要条件

ヘッダー: <hash_set>

名前空間: のstdext

参照

関連項目

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

標準テンプレート ライブラリ

その他の技術情報

<hash_set> メンバー

hash_set のメンバー