![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |


ハッシュ マップ ( SFXHashmap クラスのインスタンス ) の要素のキーは 4 バイト以下のデータ、SFXAnsiString クラス または SFXWideString クラスのインスタンスでなければいけません。 また、ハッシュ マップの要素の値は 4 バイト以下のデータでなければいけません。 5 バイト以上の UInt64 型データ や Double 型データ、クラスのインスタンスをハッシュ マップの要素の値として処理するにはポインターを使います。
// 5 バイト以上のデータやクラスのインスタンスは // ハッシュ マップ ( SFXHashmap クラスのインスタンス ) の要素の値にできない // SFXHashmap<SFXAnsiString, SInt64> map64; NG // SFXHashmap<SFXAnsiString, SFXAnsiString> mapstr; NG // しかし、5 バイト以上のデータやクラスのインスタンスへのポインターはハッシュ マップの要素の値にできる SFXHashmap<SFXAnsiString, SInt64Ptr> map64; // OK SFXHashmap<<SFXAnsiString, SFXAnsiStringPtr> mapstr; // OK
| コンストラクタ/デストラクタ |
|---|
|
SFXHashmap( Void ) SFXHashmap クラスのコンストラクタです。
|
|
SFXHashmap(
UInt16 threshold
, UInt16 ratio
) SFXHashmap クラスのコンストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
Clear( Void ) ハッシュ マップを空にします。
|
| Bool |
ContainsKey(
KeyType key
) 指定したキーが含まれるか判定します。
|
| Bool |
ContainsValue(
ValueType value
) 指定した値が含まれるか判定します。
|
| static SFXHashmap< K, V > const & |
EmptyInstance( Void ) 空のハッシュ マップを取得します。
|
| Bool |
Equals(
SFXHashmap< K, V > const & collection
) ハッシュ マップが等しいか比較します。
|
| ValueType |
Get(
KeyType key
) 指定したキーに対する値を取得します。
|
| KeyEnumerator |
GetKeyEnumerator( Void ) ハッシュ マップのキーに関する列挙子を取得します。
|
| KeyIterator |
GetKeyIterator( Void ) ハッシュ マップのキーに関する反復子を取得します。
|
| UInt16 |
GetRatio( Void ) ハッシュ テーブルの大きさを拡張する割合を取得します。
|
| SInt32 |
GetSize( Void ) サイズ(ハッシュ マップ キーの総数)を取得します。
|
| UInt16 |
GetThreshold( Void ) ハッシュ テーブルの大きさを拡張する閾値を取得します。
|
| ValueEnumerator |
GetValueEnumerator( Void ) ハッシュ マップの値に関する列挙子を取得します。
|
| ValueIterator |
GetValueIterator( Void ) ハッシュ マップの値に関する反復子を取得します。
|
| Bool |
IsEmpty( Void ) ハッシュ マップが空であるか判定します。
|
| SFCError |
Merge(
SFXHashmap< K, V > const & collection
) ハッシュ マップを統合します。
|
| Void |
Remove(
KeyType key
) 指定したキーを削除します。
|
| SFCError |
Set(
SFXHashmap< K, V > const & collection
) Set( KeyType key , ValueType value ) キーに対応する値を設定します。またはハッシュ マップを設定します。
|
| Void |
SetRatio(
UInt16 param
) ハッシュ テーブルの大きさを拡張する割合を設定します。
|
| Void |
SetThreshold(
UInt16 param
) ハッシュ テーブルの大きさを拡張する閾値を設定します。
|
| ValueType |
operator[](
KeyType key
) 指定したキーに対する値を取得します。
|
| 型 |
|---|
|
DefaultEnum ハッシュ テーブルの大きさを拡張する閾値と割合の既定値を表します。
|
|
KeyEnumerator ハッシュ マップのキーに関する列挙子を保持するクラスです。
|
|
KeyIterator ハッシュ マップのキーに関する反復子を保持するクラスです。
|
|
ValueEnumerator ハッシュ マップの値に関する列挙子を保持するクラスです。
|
|
ValueIterator ハッシュ マップの値に関する反復子を保持するクラスです。
|
[ public, explicit ] SFXHashmap(Void);
[ public, explicit ]
SFXHashmap(
UInt16 threshold // ハッシュ テーブルの拡張を行う閾値
UInt16 ratio // 拡張される割合
);
[ public ] Void Clear(Void);
文字列キーを利用する場合は、キー管理用のリソースは自動的に解放されます。
格納されているキーや値がクラスのインスタンスへのポインターの場合、そのインスタンスは自動的に解放されません。
SFXHashmap<SFXAnsiString, SInt32> strmap;
...
strmap.Clear(); // すべてのデータと管理用メモリを解放する
[ public, const ] Bool ContainsKey( KeyType key // 存在するか調べるキー );
SFXHashmap<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 // 存在するか調べる値 );
SFXHashmap<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 ] SFXHashmap< K, V > const & EmptyInstance(Void);
空のハッシュ マップを表すインスタンスを取得します。
[ public, const ] Bool Equals( SFXHashmap< K, V > const & collection // 比較するハッシュ マップ );
2 つのハッシュ マップに同じキーとその値の要素が同じ順で格納されているか調べます。
キーまたはその値がクラスのインスタンスへのポインターの場合、アドレスを比較します。
[ public, const ]
ValueType Get(
KeyType key // 取得する値のキー
);指定したキーに対するマッピングがあれば、値を返します。
なければ null を返します。
SFXHashmap<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);
SFXHashmap::GetKeyIterator | SFXHashmap::GetValueIterator | SFXHashmap::GetValueEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator
[ public ] KeyIterator GetKeyIterator(Void);
SFXHashmap::GetKeyEnumerator | SFXHashmap::GetValueEnumerator | SFXHashmap::GetValueIterator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator
[ public, const ] UInt16 GetRatio(Void);
[ public, const ] SInt32 GetSize(Void);
[ public, const ] UInt16 GetThreshold(Void);
[ public, const ] ValueEnumerator GetValueEnumerator(Void);
SFXHashmap::GetValueIterator | SFXHashmap::GetKeyIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator
[ public ] ValueIterator GetValueIterator(Void);
SFXHashmap::GetValueEnumerator | SFXHashmap::GetKeyIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator
[ public, const ] Bool IsEmpty(Void);
[ public ] SFCError Merge( SFXHashmap< K, V > const & collection // 統合するハッシュ マップ );
処理中に何らかのエラーが発生した場合は、元の状態に戻します。
[ public ] Void Remove( KeyType key // 削除するキー );
[ public ] SFCError Set( SFXHashmap< K, V > const & collection // 設定するハッシュ マップ );
[ public ] SFCError Set( KeyType key // 設定するキー ValueType value // 設定する値 );
処理中に何らかのエラーが発生した場合は、元の状態に戻します。
SFXHashmap<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 } }
ハッシュテーブルは、キーの数が増えた時に効率化のためにサイズが拡張されます。
テーブルの大きさを増加させる割合を百分率で指定します。
ハッシュ テーブルは、キーの数が増えた時に効率化のためにサイズが拡張されます。
以下の条件を満たすときに自動で行われます。
要素数 * 閾値 / 100 > ハッシュテーブルのサイズ
[ public, const ]
ValueType operator[](
KeyType key // 取得するキーの位置
);指定したキーに対するマッピングが存在すればその値を返します。
存在しなければ null を返します。
enum DefaultEnum {
DEFAULT_THRESHOLD = 10, // ハッシュ テーブルの大きさを拡張する閾値
DEFAULT_RATIO = 50 // ハッシュ テーブルの大きさを拡張する割合
};
SFXHashmap::SetThreshold | SFXHashmap::GetThreshold | SFXHashmap::SetRatio | SFXHashmap::GetRatio
[ 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;
};
KeyEnumerator クラスは、ハッシュ マップのキーに関する列挙子を保持するクラスです。
| GetNext | 次の要素を取得します。要素がない場合 null を返します。 |
| GetPrevious | 前の要素を取得します。要素がない場合 null を返します。 |
| GetValue | 現在の要素に対する値を取得します。無効な場合は null を返します。 |
| HasNext | 次の要素があるか調べます。 |
| HasPrevious | 前の要素があるか調べます。 |
| IsValid | 列挙子が有効であるか判定します。 |
SFXHashmap::KeyIterator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::GetKeyIterator | SFXHashmap::GetValueEnumerator | SFXHashmap::GetValueIterator
[ public ]
SFMTYPEDEFCLASS(KeyIterator)
class KeyIterator {
public:
explicit KeyIterator (Void);
KeyType GetNext (Void);
KeyType GetPrevious (Void);
ValueType GetValue (Void) const;
Bool HasNext (Void) const;
Bool HasPrevious (Void) const;
Bool IsValid (Void) const;
Void Remove (Void);
};
KeyIterator クラスは、ハッシュ マップのキーに関する反復子を保持するクラスです。
| GetNext | 次の要素を取得します。要素がない場合 null を返します。 |
| GetPrevious | 前の要素を取得します。要素がない場合 null を返します。 |
| GetValue | 現在の要素に対する値を取得します。無効な場合は null を返します。 |
| HasNext | 次の要素があるか調べます。 |
| HasPrevious | 前の要素があるか調べます。 |
| IsValid | 反復子が有効であるか判定します。 |
| Remove | 反復子が指す要素を削除します。 |
SFXHashmap::KeyEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::GetKeyIterator | SFXHashmap::GetValueEnumerator | SFXHashmap::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;
};
ValueEnumerator クラスは、ハッシュ マップの値に関する列挙子を保持するクラスです。
| GetNext | 次の要素を取得します。要素がない場合 null を返します。 |
| GetPrevious | 前の要素を取得します。要素がない場合 null を返します。 |
| GetKey | 現在の要素に対するキーを取得します。無効な場合は null を返します。 |
| HasNext | 次の要素があるか調べます。 |
| HasPrevious | 前の要素があるか調べます。 |
| IsValid | 列挙子が有効であるか判定します。 |
SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::GetKeyIterator | SFXHashmap::GetValueEnumerator | SFXHashmap::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;
Void Remove (Void);
};
ValueIterator クラスは、ハッシュ マップの値に関する反復子を保持するクラスです。
| Set | 反復子が指す要素に対する値の内容を指定した値で設定します。 |
| GetNext | 次の要素を取得します。要素がない場合 null を返します。 |
| GetPrevious | 前の要素を取得します。要素がない場合 null を返します。 |
| GetKey | 現在の要素に対するキーを取得します。無効な場合は null を返します。 |
| HasNext | 次の要素があるか調べます。 |
| HasPrevious | 前の要素があるか調べます。 |
| IsValid | 反復子が有効であるか判定します。 |
| Remove | 反復子が指す要素を削除します。 |
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|