前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1
SFXHashmap
ハッシュ テーブルを利用して検索効率を高めたマップを表すクラスです。
#include <SFXHashmap.h.hpp>
class SFXHashmap;
SFMTYPEDEFCLASS(SFXHashmap)

継承図

SFXHashmap クラスの継承図

協調図

SFXHashmap クラスの協調図

解説

ハッシュ マップ ( 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
ハッシュ マップの値に関する反復子を保持するクラスです。

SFXHashmap::SFXHashmap
SFXHashmap クラスのコンストラクタです。
[ public, explicit ]
SFXHashmap(Void);
[ public, explicit ]
SFXHashmap(
    UInt16 threshold   // ハッシュ テーブルの拡張を行う閾値
    UInt16 ratio       // 拡張される割合
);

SFXHashmap::Clear
ハッシュ マップを空にします。
[ public ]
Void Clear(Void);

解説

文字列キーを利用する場合は、キー管理用のリソースは自動的に解放されます。

格納されているキーや値がクラスのインスタンスへのポインターの場合、そのインスタンスは自動的に解放されません。

使用例

SFXHashmap<SFXAnsiString, SInt32> strmap;
 
...

strmap.Clear();   // すべてのデータと管理用メモリを解放する

参照

SFXHashmap::Remove


SFXHashmap::ContainsKey
指定したキーが含まれるか判定します。
[ public, const ]
Bool ContainsKey(
    KeyType key   // 存在するか調べるキー
);

戻り値

  • キーがあるとき : true
  • キーがないとき : false

使用例

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
    }
}

参照

SFXHashmap::ContainsValue


SFXHashmap::ContainsValue
指定した値が含まれるか判定します。
[ public, const ]
Bool ContainsValue(
    ValueType value   // 存在するか調べる値
);

戻り値

  • 値があるとき : true
  • 値がないとき : false

使用例

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
    }
}

参照

SFXHashmap::ContainsKey


SFXHashmap::EmptyInstance
空のハッシュ マップを取得します。
[ public, static ]
SFXHashmap< K, V > const & EmptyInstance(Void);

解説

空のハッシュ マップを表すインスタンスを取得します。


SFXHashmap::Equals
ハッシュ マップが等しいか比較します。
[ public, const ]
Bool Equals(
    SFXHashmap< K, V > const & collection   // 比較するハッシュ マップ
);

戻り値

  • 等しいとき: true
  • 異なるとき : false

解説

2 つのハッシュ マップに同じキーとその値の要素が同じ順で格納されているか調べます。

キーまたはその値がクラスのインスタンスへのポインターの場合、アドレスを比較します。


SFXHashmap::Get
指定したキーに対する値を取得します。
[ 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
    }
}

参照

SFXHashmap::Set


SFXHashmap::GetKeyEnumerator
ハッシュ マップのキーに関する列挙子を取得します。
[ public, const ]
KeyEnumerator GetKeyEnumerator(Void);

参照

SFXHashmap::GetKeyIterator | SFXHashmap::GetValueIterator | SFXHashmap::GetValueEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator


SFXHashmap::GetKeyIterator
ハッシュ マップのキーに関する反復子を取得します。
[ public ]
KeyIterator GetKeyIterator(Void);

参照

SFXHashmap::GetKeyEnumerator | SFXHashmap::GetValueEnumerator | SFXHashmap::GetValueIterator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator


SFXHashmap::GetRatio
ハッシュ テーブルの大きさを拡張する割合を取得します。
[ public, const ]
UInt16 GetRatio(Void);

参照

SFXHashmap::SetRatio


SFXHashmap::GetSize
サイズ(ハッシュ マップ キーの総数)を取得します。
[ public, const ]
SInt32 GetSize(Void);

SFXHashmap::GetThreshold
ハッシュ テーブルの大きさを拡張する閾値を取得します。
[ public, const ]
UInt16 GetThreshold(Void);

参照

SFXHashmap::SetThreshold


SFXHashmap::GetValueEnumerator
ハッシュ マップの値に関する列挙子を取得します。
[ public, const ]
ValueEnumerator GetValueEnumerator(Void);

参照

SFXHashmap::GetValueIterator | SFXHashmap::GetKeyIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator


SFXHashmap::GetValueIterator
ハッシュ マップの値に関する反復子を取得します。
[ public ]
ValueIterator GetValueIterator(Void);

参照

SFXHashmap::GetValueEnumerator | SFXHashmap::GetKeyIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::ValueEnumerator | SFXHashmap::ValueIterator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator


SFXHashmap::IsEmpty
ハッシュ マップが空であるか判定します。
[ public, const ]
Bool IsEmpty(Void);

戻り値

  • 空のとき : true
  • 空でないとき : false

SFXHashmap::Merge
ハッシュ マップを統合します。
[ public ]
SFCError Merge(
    SFXHashmap< K, V > const & collection   // 統合するハッシュ マップ
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMOERY
  • 失敗したとき : SFERR_INVALID_STATE

解説

処理中に何らかのエラーが発生した場合は、元の状態に戻します。


SFXHashmap::Remove
指定したキーを削除します。
[ public ]
Void Remove(
    KeyType key   // 削除するキー
);

SFXHashmap::Set
キーに対応する値を設定します。またはハッシュ マップを設定します。
[ public ]
SFCError Set(
    SFXHashmap< K, V > const & collection   // 設定するハッシュ マップ
);
[ public ]
SFCError Set(
    KeyType key       // 設定するキー
    ValueType value   // 設定する値
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • メモリ不足のとき : SFERR_NO_MEMOERY
  • 失敗したとき : SFERR_INVALID_STATE

解説

処理中に何らかのエラーが発生した場合は、元の状態に戻します。

使用例

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
    }
}

参照

SFXHashmap::Get


SFXHashmap::SetRatio
ハッシュ テーブルの大きさを拡張する割合を設定します。
[ public ]
Void SetRatio(
    UInt16 param   // 設定する割合 (%)
);

解説

ハッシュテーブルは、キーの数が増えた時に効率化のためにサイズが拡張されます。

テーブルの大きさを増加させる割合を百分率で指定します。

参照

SFXHashmap::GetRatio


SFXHashmap::SetThreshold
ハッシュ テーブルの大きさを拡張する閾値を設定します。
[ public ]
Void SetThreshold(
    UInt16 param   // 設定する閾値 (%)
);

解説

ハッシュ テーブルは、キーの数が増えた時に効率化のためにサイズが拡張されます。

以下の条件を満たすときに自動で行われます。

要素数 * 閾値 / 100 > ハッシュテーブルのサイズ

参照

SFXHashmap::GetThreshold


SFXHashmap::operator[]
指定したキーに対する値を取得します。
[ public, const ]
ValueType operator[](
    KeyType key   // 取得するキーの位置
);

戻り値

指定したキーに対するマッピングが存在すればその値を返します。

存在しなければ null を返します。

参照

SFXHashmap::Set


SFXHashmap::DefaultEnum
ハッシュ テーブルの大きさを拡張する閾値と割合の既定値を表します。
enum DefaultEnum {
    DEFAULT_THRESHOLD = 10,     // ハッシュ テーブルの大きさを拡張する閾値
    DEFAULT_RATIO     = 50      // ハッシュ テーブルの大きさを拡張する割合
};

参照

SFXHashmap::SetThreshold | SFXHashmap::GetThreshold | SFXHashmap::SetRatio | SFXHashmap::GetRatio


SFXHashmap::KeyEnumerator
ハッシュ マップのキーに関する列挙子を保持するクラスです。
[ 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


SFXHashmap::KeyIterator
ハッシュ マップのキーに関する反復子を保持するクラスです。
[ 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


SFXHashmap::ValueEnumerator
ハッシュ マップの値に関する列挙子を保持するクラスです。
[ 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


SFXHashmap::ValueIterator
ハッシュ マップの値に関する反復子を保持するクラスです。
[ 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 反復子が指す要素を削除します。

参照

SFXHashmap::ValueEnumerator | SFXHashmap::KeyEnumerator | SFXHashmap::KeyIterator | SFXHashmap::GetKeyEnumerator | SFXHashmap::GetKeyIterator | SFXHashmap::GetValueEnumerator | SFXHashmap::GetValueIterator