SophiaFramework UNIVERSE 5.3 |
SFXFlatHashMap クラスは、 キーと値のペア要素を持つハッシュマップを操作するためのデータ構造です。
SFXFlatHashMap クラスは、 SFXLinkedHashMap クラスにあるペア要素の追加順双方向リンクリストを内部に保持しません。
ペア要素のキーと値は 4 バイト以下のデータでなければいけません。 5 バイト以上の SInt64 / UInt64 / Float64 型などのデータや、 クラスインスタンスをペア要素のキーや値にしたい場合はポインタを利用します。
ただし、ペア要素のキーには、 文字列(SFXAnsiString / SFXWideString)を格納できます。 この場合、要素毎の文字列のヒープの確保と解放はこのクラス内部で自動的に行われます。
ハッシュテーブルの大きさに対して要素の占有率が 45 % を超えると、 自動的にハッシュテーブルはリ拡張されてハッシュされます。
// 5 バイト以上のデータやクラスインスタンスは、ペア要素の値に格納できない // ※文字列は、ペア要素のキーに格納できる // SFXFlatHashMap<SFXAnsiString, SInt64> map64; NG // SFXFlatHashMap<SFXAnsiString, SFXAnsiString> mapstr; NG // ポインタはペア要素の値に格納できる // 5 バイト以上のデータをペア要素の値にしたい場合は、ポインタを利用する SFXFlatHashMap<SFXAnsiString, SInt64Ptr> map64; // OK SFXFlatHashMap<SFXAnsiString, SFXAnsiStringPtr> mapstr; // OK
SFXLinkedHashMap | SFXHashmap | SFXAnsiString | SFXWideString | ハッシュマップ
コンストラクタ/デストラクタ |
---|
SFXFlatHashMap( Void ) SFXFlatHashMap クラスのコンストラクタです。
|
パブリック関数 | |
---|---|
Void |
Clear( Void ) ハッシュマップを空にします。
|
Bool |
ContainsKey(
KeyType key
) 指定されたキーを持つペア要素が含まれるか判定します。
|
Bool |
ContainsValue(
ValueType value
) 指定された値を持つペア要素が含まれるか判定します。
|
static SFXFlatHashMap< K, V > const & |
EmptyInstance( Void ) 空のハッシュマップを取得します。
|
Bool |
Equals(
SFXFlatHashMap< K, V > const & collection
) 指定されたハッシュマップと等しいか判定します。
|
ValueType |
Get(
KeyType key
, BoolPtr found = null
) 指定されたキーを持つペア要素の値を取得します。
|
KeyEnumerator |
GetKeyEnumerator( Void ) ハッシュマップのペア要素のキーに対応するキー列挙子を取得します。
|
KeyIterator |
GetKeyIterator( Void ) ハッシュマップのペア要素のキーに対応するキー反復子を取得します。
|
SInt32 |
GetSize( Void ) ハッシュマップのサイズを取得します。
|
ValueEnumerator |
GetValueEnumerator( Void ) ハッシュマップのペア要素の値に対応する値列挙子を取得します。
|
ValueIterator |
GetValueIterator( Void ) ハッシュマップのペア要素の値に対応する値反復子を取得します。
|
Bool |
IsEmpty( Void ) ハッシュマップが空であるか判定します。
|
SFCError |
Merge(
SFXFlatHashMap< K, V > const & collection
) ハッシュマップを統合します。
|
Void |
Remove(
KeyType key
) 指定されたキーを持つペア要素を削除します。
|
SFCError |
Set(
SFXFlatHashMap< K, V > const & collection
) 指定されたペア要素(キーと値のペア)を設定します。またはハッシュマップを設定します。
|
SFCError |
Set(
KeyType key
, ValueType value
) 指定されたペア要素(キーと値のペア)を設定します。またはハッシュマップを設定します。
|
SFCError |
Swap(
KeyType destination
, KeyType source
) 指定されたキーを持つペア要素の値を交換します。
|
ValueType |
operator[](
KeyType key
) 指定されたキーを持つペア要素の値を取得します。
|
型 |
---|
KeyEnumerator ハッシュマップのペア要素のキーに対応するキー列挙子を保持するクラスです。
|
KeyIterator ハッシュマップのペア要素のキーに対応するキー反復子を保持するクラスです。
|
ValueEnumerator ハッシュマップのペア要素の値に対応する値列挙子を保持するクラスです。
|
ValueIterator ハッシュマップのペア要素の値に対応する値反復子を保持するクラスです。
|
[ public, explicit ] SFXFlatHashMap(Void);
[ public ] Void Clear(Void);
この関数は、このハッシュマップを空にします。 このハッシュマップに割り当てられていたメモリ領域は解放されます。
この関数を実行した後、ハッシュマップのサイズは 0 になります。
キーが文字列(SFXAnsiString / SFXWideString 型)である場合、 キーである文字列も自動的に解放されます。
注意 | |
---|---|
キーや値がクラスインスタンスや 4 バイトよりも大きなデータへのポインタの場合、 ポインタが指すメモリ領域は解放されません。 ハッシュマップをクリアする前に、 delete 文を使用して明示的にその領域を解放する必要があります。 さもなければ、メモリリークが発生します。 |
注意 | |
---|---|
この関数は、このハッシュマップがスコープから外れるタイミングで自動的に呼び出されます。 |
SFXFlatHashMap<SFXAnsiString, SInt32> strmap;
...
strmap.Clear(); // ハッシュマップを空にする
[ public, const ] Bool ContainsKey( KeyType key // 存在するか調べるキー );
この関数は、このハッシュマップに指定されたキーを持つペア要素(キーと値)が含まれるか判定します。
SFXFlatHashMap<SFXAnsiString, SInt32> strmap; // キーと値からなるハッシュマップ要素を設定する if (strmap.Set("mike", 2) == SFERR_NO_ERROR) { // キーと値からなるハッシュマップ要素を設定する if (strmap.Set("john", 1) == SFERR_NO_ERROR) { // 指定したキーが含まれるか判定する TRACE("ContainsKey(\"mike\") = %s", (strmap.ContainsKey("mike")) ? ("true") : ("false")); // ContainsKey("mike") = true TRACE("ContainsKey(\"tom\") = %s", (strmap.ContainsKey("tom")) ? ("true") : ("false")); // ContainsKey("tom") = false } }
[ public, const ] Bool ContainsValue( ValueType value // 存在するか調べる値 );
この関数は、このハッシュマップに指定された値を持つペア要素(キーと値)が含まれるか判定します。
SFXFlatHashMap<SFXAnsiString, SInt32> strmap; // キーと値からなるハッシュマップ要素を設定する if (strmap.Set("mike", 2) == SFERR_NO_ERROR) { // キーと値からなるハッシュマップ要素を設定する if (strmap.Set("john", 1) == SFERR_NO_ERROR) { // 指定した値が含まれるか判定する TRACE("ContainsValue(2) = %s", (strmap.ContainsValue(2)) ? ("true") : ("false")); // ContainsValue(2) = true TRACE("ContainsValue(5) = %s", (strmap.ContainsValue(5)) ? ("true") : ("false")); // ContainsValue(5) = false } }
[ public, static ] SFXFlatHashMap< K, V > const & EmptyInstance(Void);
空のハッシュマップを表すインスタンス。
この関数は、空のハッシュマップを表すインスタンスを取得します。
[ public, const ] Bool Equals( SFXFlatHashMap< K, V > const & collection // 比較するハッシュマップ );
この関数は、このハッシュマップが指定されたハッシュマップと等しいか判定します。
具体的には、2 つのハッシュマップに同じペア要素(キーと値)が格納されているか調べます。
注意 | |
---|---|
キーまたは値がポインタである場合、ポインタのアドレス値だけを比較します。 |
[ public, const ] ValueType Get( KeyType key // 取得する値を持つペア要素のキー BoolPtr found = null // キーの有無 );
このハッシュマップに指定されたキーを持つペア要素があれば、ペア要素の値を返します。
存在しない場合は、null または 0 を返します。
この関数は、このハッシュマップ内の指定されたキーを持つペア要素の値を取得します。
指定されたキーを持つペア要素が存在する場合、第 2 引数 found に true が渡されます。 そうでない場合は、false が渡されます。
注意 | |
---|---|
指定されたキーを持つペア要素が存在しない場合、エラーは発生せず、 この関数は 0 または null を返します。 |
SFXFlatHashMap<SFXAnsiString, SInt32> strmap; // キーと値からなるハッシュマップ要素を設定する if (strmap.Set("mike", 2) == SFERR_NO_ERROR) { // キーと値からなるハッシュマップ要素を設定する if (strmap.Set("john", 1) == SFERR_NO_ERROR) { // 指定したキーに対する値を取得する TRACE("%d", strmap.Get("mike")); // 2 } }
[ public, const ] KeyEnumerator GetKeyEnumerator(Void);
このハッシュマップのペア要素のキーに対応するキー列挙子
この関数は、このハッシュマップのペア要素のキーに対応するキー列挙子を取得します。
SFXFlatHashMap::GetKeyIterator | SFXFlatHashMap::GetValueIterator | SFXFlatHashMap::GetValueEnumerator | SFXFlatHashMap::ValueEnumerator | SFXFlatHashMap::ValueIterator | SFXFlatHashMap::KeyEnumerator | SFXFlatHashMap::KeyIterator
[ public ] KeyIterator GetKeyIterator(Void);
このハッシュマップのペア要素のキーに対応するキー反復子
この関数は、このハッシュマップのペア要素のキーに対応するキー反復子を取得します。
SFXFlatHashMap::GetKeyEnumerator | SFXFlatHashMap::GetValueEnumerator | SFXFlatHashMap::GetValueIterator | SFXFlatHashMap::ValueEnumerator | SFXFlatHashMap::ValueIterator | SFXFlatHashMap::KeyEnumerator | SFXFlatHashMap::KeyIterator
[ public, const ] SInt32 GetSize(Void);
このハッシュマップのサイズ(ペア要素の数)。
この関数は、このハッシュマップのサイズ(ペア要素の数)を取得します。
[ public, const ] ValueEnumerator GetValueEnumerator(Void);
このハッシュマップのペア要素の値に対応する値列挙子
この関数は、このハッシュマップのペア要素の値に対応する値列挙子を取得します。
SFXFlatHashMap::GetValueIterator | SFXFlatHashMap::GetKeyIterator | SFXFlatHashMap::GetKeyEnumerator | SFXFlatHashMap::ValueEnumerator | SFXFlatHashMap::ValueIterator | SFXFlatHashMap::KeyEnumerator | SFXFlatHashMap::KeyIterator
[ public ] ValueIterator GetValueIterator(Void);
このハッシュマップのペア要素の値に対応する値反復子
この関数は、このハッシュマップのペア要素の値に対応する値反復子を取得します。
SFXFlatHashMap::GetValueEnumerator | SFXFlatHashMap::GetKeyIterator | SFXFlatHashMap::GetKeyEnumerator | SFXFlatHashMap::ValueEnumerator | SFXFlatHashMap::ValueIterator | SFXFlatHashMap::KeyEnumerator | SFXFlatHashMap::KeyIterator
[ public, const ] Bool IsEmpty(Void);
この関数は、このハッシュマップが空であるか判定します。
[ public ] SFCError Merge( SFXFlatHashMap< K, V > const & collection // 統合するハッシュマップ );
この関数は、このハッシュマップと指定されたハッシュマップを統合します。
※処理中にエラーが発生した場合は、元の状態に戻します。
[ public ] Void Remove( KeyType key // 削除するペア要素のキー );
この関数は、このハッシュマップから指定したキーを持つペア要素(キーと値)を削除します。
キーが文字列(SFXAnsiString / SFXWideString 型)である場合、 キーである文字列も自動的に解放されます。
注意 | |
---|---|
キーや値がクラスインスタンスや 4 バイトよりも大きなデータへのポインタの場合、 それらのデータは自動的に解放されません。 それらのデータは、ハッシュマップをクリアする直前に、 delete 文を使用して明示的にポインタが指すメモリ領域を解放する必要があります。 さもなければ、メモリリークが発生します。 |
[ public ] SFCError Set( SFXFlatHashMap< K, V > const & collection // 設定するハッシュマップ );
[ public ] SFCError Set( KeyType key // 設定するキー ValueType value // 設定する値 );
この関数は、指定されたペア要素(キーと値のペア)をこのハッシュマップに設定します。 またはこのハッシュマップを指定されたハッシュマップに設定します。
※処理中にエラーが発生した場合は、元の状態に戻します。
空文字列 | |
---|---|
空文字列とは、 SFXAnsiString::EmptyInstance / SFXWideString::EmptyInstance 関数の戻り値のことです。 |
SFXFlatHashMap<SFXAnsiString, SInt32> strmap; // 要素(キーと値のペア)を設定する if (strmap.Set("mike", 2) == SFERR_NO_ERROR) { // 要素(キーと値のペア)を設定する if (strmap.Set("john", 1) == SFERR_NO_ERROR) { // 指定したキーを持つ要素(キーと値のペア)が存在するか判定する TRACE("ContainsKey(\"mike\") = %s", (strmap.ContainsKey("mike")) ? ("true") : ("false")); // ContainsKey("mike") = true TRACE("ContainsKey(\"tom\") = %s", (strmap.ContainsKey("tom")) ? ("true") : ("false")); // ContainsKey("tom") = false } }
SFXFlatHashMap::Get | SFXFlatHashMap::operator[] | SFXAnsiString::EmptyInstance | SFXWideString::EmptyInstance
[ public ] SFCError Swap( KeyType destination // 交換先のキー KeyType source // 交換元のキー );
この関数は、指定したキーを持つペア要素の値を交換します。
SFXFlatHashMap<SFXAnsiString, SInt32> strmap; // ペア要素 (キー: "mike", 値: 2) を設定する if (strmap.Set("mike", 2) == SFERR_NO_ERROR) { // ペア要素 (キー: "john", 値: 1) を設定する if (strmap.Set("john", 1) == SFERR_NO_ERROR) { // 2 つのペア要素の値を交換する if (strmap.Swap("mike", "john") == SFERR_NO_ERROR) { // "mike" をキーに持つペア要素の値をデバッグウィンドウに表示する TRACE("%d", strmap.Get("mike")); // 1 } } }
[ public, const ] ValueType operator[]( KeyType key // 取得するキーの位置 );
指定したキーに対するマッピングが存在すればその値を返します。
存在しない場合は、null または 0 を返します。
このオペレーターは、このハッシュマップ内の指定したキーを持つペア要素の値を取得します。
注意 | |
---|---|
指定したキーを持つペア要素が存在しない場合、エラーは発生せず、 このオペレーターは 0 または null を返します。 |
[ public ] SFMTYPEDEFCLASS(KeyEnumerator) class KeyEnumerator { public: explicit KeyEnumerator (Void); KeyEnumerator (KeyIteratorConstRef iterator); KeyEnumeratorRef operator= (KeyIteratorConstRef iterator); KeyType GetNext (Void); KeyType GetPrevious (Void); ValueType GetValue (Void) const; Bool HasNext (Void) const; Bool HasPrevious (Void) const; Bool IsValid (Void) const; };
このクラスは、ハッシュマップのペア要素のキーに対応するキー列挙子を保持するクラスです。
GetNext | 次の要素を取得します。要素がない場合 null または 0 を返します。 |
GetPrevious | 前の要素を取得します。要素がない場合 null または 0 を返します。 |
GetValue | 現在の要素に対する値を取得します。無効な場合は null を返します。 |
HasNext | 次の要素があるか調べます。 |
HasPrevious | 前の要素があるか調べます。 |
IsValid | 列挙子が有効であるか判定します。 |
SFXFlatHashMap::KeyIterator | SFXFlatHashMap::ValueEnumerator | SFXFlatHashMap::ValueIterator | SFXFlatHashMap::GetKeyEnumerator | SFXFlatHashMap::GetKeyIterator | SFXFlatHashMap::GetValueEnumerator | SFXFlatHashMap::GetValueIterator
[ public ] SFMTYPEDEFCLASS(KeyIterator) class KeyIterator { public: explicit KeyIterator (Void); SFCError SetValue (ValueType type); KeyType GetNext (Void); KeyType GetPrevious (Void); ValueType GetValue (Void) const; Bool HasNext (Void) const; Bool HasPrevious (Void) const; Bool IsValid (Void) const; };
このクラスは、ハッシュマップのキーに関するキー反復子を保持するクラスです。
SetValue | 反復子が指す要素に対する値の内容を指定した値で設定します。 |
GetNext | 次の要素を取得します。要素がない場合 null または 0 を返します。 |
GetPrevious | 前の要素を取得します。要素がない場合 null または 0 を返します。 |
GetValue | 現在の要素に対する値を取得します。無効な場合は null を返します。 |
HasNext | 次の要素があるか調べます。 |
HasPrevious | 前の要素があるか調べます。 |
IsValid | 反復子が有効であるか判定します。 |
SFXFlatHashMap::KeyEnumerator | SFXFlatHashMap::ValueEnumerator | SFXFlatHashMap::ValueIterator | SFXFlatHashMap::GetKeyEnumerator | SFXFlatHashMap::GetKeyIterator | SFXFlatHashMap::GetValueEnumerator | SFXFlatHashMap::GetValueIterator
[ public ] SFMTYPEDEFCLASS(ValueEnumerator) class ValueEnumerator { public: explicit ValueEnumerator (Void); ValueEnumerator (ValueIteratorConstRef iterator); ValueEnumeratorRef operator= (ValueIteratorConstRef iterator); ValueType GetNext (Void); ValueType GetPrevious (Void); KeyType GetKey (Void) const; Bool HasNext (Void) const; Bool HasPrevious (Void) const; Bool IsValid (Void) const; };
このクラスは、ハッシュマップのペア要素の値に対応する値列挙子を保持するクラスです。
GetNext | 次の要素を取得します。要素がない場合 null または 0 を返します。 |
GetPrevious | 前の要素を取得します。要素がない場合 null または 0 を返します。 |
GetKey | 現在の要素に対するキーを取得します。無効な場合は null を返します。 |
HasNext | 次の要素があるか調べます。 |
HasPrevious | 前の要素があるか調べます。 |
IsValid | 列挙子が有効であるか判定します。 |
SFXFlatHashMap::ValueIterator | SFXFlatHashMap::KeyEnumerator | SFXFlatHashMap::KeyIterator | SFXFlatHashMap::GetKeyEnumerator | SFXFlatHashMap::GetKeyIterator | SFXFlatHashMap::GetValueEnumerator | SFXFlatHashMap::GetValueIterator
[ public ] SFMTYPEDEFCLASS(ValueIterator) class ValueIterator { public: explicit ValueIterator (Void); SFCError Set (ValueType value); ValueType GetNext (Void); ValueType GetPrevious (Void); KeyType GetKey (Void) const; Bool HasNext (Void) const; Bool HasPrevious (Void) const; Bool IsValid (Void) const; };
このクラスは、ハッシュマップのペア要素の値に対応する値反復子を保持するクラスです。
Set | 反復子が指す要素に対する値の内容を指定した値で設定します。 |
GetNext | 次の要素を取得します。要素がない場合 null または 0 を返します。 |
GetPrevious | 前の要素を取得します。要素がない場合 null または 0 を返します。 |
GetKey | 現在の要素に対するキーを取得します。無効な場合は null を返します。 |
HasNext | 次の要素があるか調べます。 |
HasPrevious | 前の要素があるか調べます。 |
IsValid | 反復子が有効であるか判定します。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |