hash_multiset (STL/CLR)
テンプレート クラスは、オブジェクトを渡してコントロール双方向アクセスできる要素の可変期間シーケンスついて説明します。ハッシュ テーブル、ノードの双方向リンク リストを格納する各テーブル エントリと 1 個の要素を格納する各ノードが要素のシーケンスを管理するためにコンテナー hash_multiset を使用します。各要素の値は、シーケンスの順序を指定するためのキーとして使用されます。
下の説明では GValue は GKeyに、 Key^場合、後者は ref 型の場合 Key と同じである同じです。
template<typename Key>
ref class hash_multiset
: public
System::ICloneable,
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<GValue>,
System::Collections::Generic::ICollection<GValue>,
System::Collections::Generic::IList<GValue>,
Microsoft::VisualC::StlClr::IHash<Gkey, GValue>
{ ..... };
パラメーター
- Key
被制御シーケンス内の要素のキー コンポーネントの型。
メンバー
型定義 |
Description |
---|---|
被制御シーケンスの定数反復子の型です。 |
|
要素への定数参照の型です。 |
|
被制御シーケンスの定数反転反復子の型です。 |
|
2 個の要素間での (おそらく符号付き)間隔の種類。 |
|
コンテナーのジェネリック インターフェイス型。 |
|
コンテナーのジェネリック インターフェイスの反復子の型。 |
|
コンテナーのジェネリック インターフェイスの反転反復子の型。 |
|
コンテナーのジェネリック インターフェイスの要素の型。 |
|
キーのハッシュのデリゲート。 |
|
被制御シーケンスの反復子の型です。 |
|
2 種類のキーの命令のデリゲート。 |
|
順序付けキーの型です。 |
|
要素への参照の型です。 |
|
被制御シーケンスの反転反復子の型です。 |
|
2 個の要素間で、 (負の)間隔の種類。 |
|
2 要素の値の命令のデリゲート。 |
|
要素の型。 |
メンバー関数 |
Description |
---|---|
被制御シーケンスの先頭を指定します。 |
|
バケット数をカウントします。 |
|
すべての要素を削除します。 |
|
指定したキーに一致する要素数をカウントします。 |
|
要素が存在しないかどうかをテストします。 |
|
被制御シーケンスの末尾を指定します。 |
|
指定したキーに一致する範囲を検索します。 |
|
指定した位置にある要素を削除します。 |
|
指定したキーに一致する要素を検索します。 |
|
キーのハッシュのデリゲートをコピーします。 |
|
コンテナー オブジェクトを構築します。 |
|
要素を追加します。 |
|
2 種類のキーの命令のデリゲートをコピーします。 |
|
バケットごとの平均要素数をカウントします。 |
|
指定したキーに一致する範囲の開始を検索します。 |
|
値オブジェクトを構築します。 |
|
バケットあたりの最大要素数を取得または設定します。 |
|
反転被制御シーケンスの先頭を指定します。 |
|
ハッシュ テーブルを再構築します。 |
|
反転被制御シーケンスの末尾を指定します。 |
|
要素の数をカウントします。 |
|
2 つのコンテナーのコンテンツを交換します。 |
|
新しい配列に被制御シーケンスのコピー。 |
|
指定したキーに一致する範囲の最後を検索します。 |
|
2 要素の値の命令のデリゲートをコピーします。 |
[演算子] |
Description |
---|---|
被制御シーケンスを置き換えます。 |
インターフェイス
Interface |
Description |
---|---|
オブジェクトを複製します。 |
|
要素によるシーケンス。 |
|
要素のグループを保持します。 |
|
入力された要素によるシーケンス。 |
|
入力された要素のグループを保持します。 |
|
IHash<キー、値> |
ジェネリック コンテナーを保持します。 |
解説
オブジェクトは、双方向リンク リスト内の各ノードとして被制御シーケンスに対するストレージの割り当ておよび解放。アクセスを簡単にするために、オブジェクトは、リスト (ハッシュ テーブル)に効果的にサブリストのシーケンスとしてリスト全体、またはバケットを管理するポインターの可変期間の配列を保持します。これにより、ノード間のリンクの変更によって注文しておくバケットに別のに 1 ノードの内容をコピーして要素を、は挿入されません。これが遅延の残りの要素を除いた要素を自由に挿入および削除できることを意味します。
オブジェクトに格納されたデリゲート オブジェクトの型 hash_set::key_compare (STL/CLR)を呼び出すことによって制御する各バケットを並べ替えます。hash_set を構築するときに格納されたデリゲート オブジェクトを指定します; デリゲート オブジェクトを指定しない場合、既定値は比較 operator<=(key_type, key_type)です。
メンバー関数 hash_set::key_comp (STL/CLR)()を呼び出して、保存されたデリゲート オブジェクトにアクセスします。このようなデリゲート オブジェクトはキーの型 hash_set::key_type (STL/CLR)の間の同等の命令を定義する必要があります。そのいずれかの 2 種類のキー X と Yのメジャー、:
key_comp()(X, Y) は、呼び出しの同じブール型の結果を返します。
key_comp()(X, Y) && key_comp()(Y, X) が true の場合、の順序がと同じであると X と Y は呼ばれます。
operator<=(key_type, key_type)、 operator>=(key_type, key_type) または operator==(key_type, key_type) のように動作する命令の規則が eqivalent 命令を定義します。
キーに対応する命令と同じ整数値にハッシュし、要素 ()バケット内の隣接することだけコンテナーを確認することに注意してください。テンプレート クラス hash_set (STL/CLR)とは異なり、テンプレート クラス hash_multiset のオブジェクトはすべての要素のキーは一意である必要はありません。(複数のは、キーの順序がと同じである場合があります)。
オブジェクトは、バケットが格納されたデリゲート オブジェクトの型 hash_set::hasher (STL/CLR)を呼び出して、特定の命令のキーを含めるかを決定します。キー値に依存する整数値を取得するためにメンバー関数 hash_set::hash_delegate (STL/CLR)() を呼び出すことで、その保存されたオブジェクトにアクセスします。hash_set を構築するときに格納されたデリゲート オブジェクトを指定します; デリゲート オブジェクトを指定しない場合、既定では関数 System::Object::hash_value(key_type)です。このキー X と Yのメジャー、:
hash_delegate()(X) は、同じ呼び出しの結果の整数を返します。
X と Y 同じ大小関係がある場合、 hash_delegate()(X) は hash_delegate()(Y)と同じ結果の整数を返す必要があります。
各要素はキーと値の両方として動作します。このシーケンスは定数時間 ()の要素の数の依存せずに、多数の操作を、任意の要素の割り当て参照、挿入、および削除の方法で表されます。 -- 少なくともケースの推奨で。要素を挿入しても反復子の有効性は失われません。また、要素を削除した場合は、削除された要素を指す反復子だけが無効化されます。
ハッシュ値が偶数に、配布する、ハッシュ テーブルは低できます。極端 -- 同じ値を常に返すハッシュ関数の場合 -- 参照、挿入、および削除は、シーケンス (線形時間)の要素の数に比例します。コンテナーは、適切なハッシュ関数、平均のバケットのサイズとハッシュ テーブルのサイズ (バケットの合計数)を選択するようにコミットします。これらの選択の一部またはすべてをオーバーライドできます。たとえば、関数 hash_set::max_load_factor (STL/CLR) と hash_set::rehash (STL/CLR)を参照してください。
hash_multiset は、メジャーが被制御シーケンスの要素を指定する反復子を持つ隣接する要素にステップ インできる双方向反復子がサポートされています。特別な先頭ノードは hash_multiset::end (STL/CLR)()によって返される反復子に対応します。存在する場合は、被制御シーケンスの最後の要素にアクセスするには、この反復子を短縮できます。ヘッド ノードに到達するに hash_multiset の反復子をインクリメントし end()に、等号を比較します。ただし、 end()によって返される反復子を逆参照できません。
数値直接的な場所です hash_multiset の要素を参照できないことに注意してください。 -- これはランダム アクセス反復子が必要です。
hash_multiset の反復子は、関連するコンテナーに、ハンドルを格納する関連の hash_multiset ノードへのハンドルを格納します。関連するコンテナー オブジェクトでのみ反復子を使用できます。hash_multiset の反復子は、関連付けられた hash_multiset ノードが hash_multiset に関連付けられている限り有効です。また、有効な反復子は dereferencable。 -- 指定する要素の値にアクセスまたは変更するために使用できます -- これが end()と異なる場合。
要素を無効にしたり、削除して格納される値のデストラクターをダイヤルします。コンテナーを破棄するにはすべての要素を消去します。したがって、要素の型が ref クラスであるコンテナー要素はコンテナーが重視されることを確認します。ただし、ハンドルのコンテナーが not の要素を破棄するメモ。
必要条件
ヘッダー:<cliext/hash_set>
名前空間: の cliext