前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXLinkedHashMap
キーと値のペア要素を持つハッシュマップを操作するためのデータ構造です。 このクラスは、ペア要素の追加順双方向リンクリストを内部で保持します。
#include <SFXLinkedHashMap.h.hpp>
class SFXLinkedHashMap;
SFMTYPEDEFCLASS(SFXLinkedHashMap)

継承図

SFXLinkedHashMap クラスの継承図

協調図

SFXLinkedHashMap クラスの協調図

解説

SFXLinkedHashMap クラスは、 キーと値のペア要素を持つハッシュマップを操作するためのデータ構造です。

SFXLinkedHashMap クラスは、 ペア要素の追加順の双方向リンクリストを内部に保持しています。 その結果、SFXLinkedHashMap クラスは、 全般的に SFXFlatHashMap クラスよりもハイパフォーマンスです。

[Note] 注意

SFXFlatHashMap クラスでは、 ペア要素の双方向リンクリストを内部に保持しません。

SFXHashmap は、SFXLinkedHashMap の別名です。 SophiaFramework UNIVERSE 5.1.8 以前の SFXHashmap(現 SFXOldHashmap)の代替クラスとして作成されました。 要素数が多い場合のリハッシュ、マージ、比較のパフォーマンスが大幅に改善されています。

ペア要素のキーと値は 4 バイト以下のデータでなければいけません。 5 バイト以上の SInt64 / UInt64 / Float64 型などのデータや、 クラスインスタンスをペア要素のキーや値にしたい場合はポインタを利用します。

ただし、ペア要素のキーには、 文字列(SFXAnsiString / SFXWideString)を格納できます。 この場合、要素毎の文字列のヒープの確保と解放はこのクラス内部で自動的に行われます。

ハッシュテーブルの大きさに対して要素の占有率が 45 % を超えると、 自動的にハッシュテーブルはリ拡張されてハッシュされます。

// 5 バイト以上のデータやクラスインスタンスは、ペア要素の値に格納できない
// ※文字列は、ペア要素のキーに格納できる
// SFXLinkedHashMap<SFXAnsiString, SInt64> map64;          NG
// SFXLinkedHashMap<SFXAnsiString, SFXAnsiString> mapstr;  NG

// ポインタはペア要素の値に格納できる
// 5 バイト以上のデータをペア要素の値にしたい場合は、ポインタを利用する
SFXLinkedHashMap<SFXAnsiString, SInt64Ptr> map64;         // OK
SFXLinkedHashMap<SFXAnsiString, SFXAnsiStringPtr> mapstr; // OK

参照

SFXHashmap | SFXFlatHashMap | SFXAnsiString | SFXWideString | ハッシュマップ

メンバ

コンストラクタ/デストラクタ
SFXLinkedHashMap( Void )
SFXLinkedHashMap クラスのコンストラクタです。
SFXLinkedHashMap( UInt16 threshold , UInt16 ratio )
SFXLinkedHashMap クラスのコンストラクタです。
パブリック関数
Void Clear( Void )
ハッシュマップを空にします。
Bool ContainsKey( KeyType key )
指定されたキーを持つペア要素が含まれるか判定します。
Bool ContainsValue( ValueType value )
指定された値を持つペア要素が含まれるか判定します。
static
SFXLinkedHashMap< K, V > const &
EmptyInstance( Void )
空のハッシュマップを取得します。
Bool Equals( SFXLinkedHashMap< K, V > const & collection )
指定されたハッシュマップと等しいか判定します。
ValueType Get( KeyType key , BoolPtr found = null )
指定されたキーを持つペア要素の値を取得します。
KeyEnumerator GetFirstKeyEnumerator( Void )
ハッシュマップの最初のペア要素のキーに対応するキー列挙子を取得します。
KeyIterator GetFirstKeyIterator( Void )
ハッシュマップの最初のペア要素のキーに対応するキー反復子を取得します。
ValueEnumerator GetFirstValueEnumerator( Void )
ハッシュマップの最初のペア要素の値に対応する値列挙子を取得します。
ValueIterator GetFirstValueIterator( Void )
ハッシュマップの最初のペア要素の値に対応する反復子を取得します。
KeyEnumerator GetKeyEnumerator( SInt32 index )
ハッシュマップのペア要素のキーに対応するキー列挙子を取得します。
KeyEnumerator GetKeyEnumerator( Void )
ハッシュマップのペア要素のキーに対応するキー列挙子を取得します。
KeyIterator GetKeyIterator( SInt32 index )
ハッシュマップのペア要素のキーに対応するキー反復子を取得します。
KeyIterator GetKeyIterator( Void )
ハッシュマップのペア要素のキーに対応するキー反復子を取得します。
KeyEnumerator GetLastKeyEnumerator( Void )
ハッシュマップの最後のペア要素のキーに対応するキー列挙子を取得します。
KeyIterator GetLastKeyIterator( Void )
ハッシュマップの最後のペア要素のキーに対応するキー反復子を取得します。
ValueEnumerator GetLastValueEnumerator( Void )
ハッシュマップの最後のペア要素の値に対応する値列挙子を取得します。
ValueIterator GetLastValueIterator( Void )
ハッシュマップの最後のペア要素の値に対応する値反復子を取得します。
UInt16 GetRatio( Void )
[廃止予定] ハッシュテーブルの大きさを拡張する割合を取得します。
SInt32 GetSize( Void )
ハッシュマップのサイズを取得します。
UInt16 GetThreshold( Void )
[廃止予定] ハッシュテーブルの大きさを拡張する閾値を取得します。
ValueEnumerator GetValueEnumerator( SInt32 index )
ハッシュマップのペア要素の値に対応する値列挙子を取得します。
ValueEnumerator GetValueEnumerator( Void )
ハッシュマップのペア要素の値に対応する値列挙子を取得します。
ValueIterator GetValueIterator( SInt32 index )
ハッシュマップのペア要素の値に対応する値反復子を取得します。
ValueIterator GetValueIterator( Void )
ハッシュマップのペア要素の値に対応する値反復子を取得します。
Bool IsEmpty( Void )
ハッシュマップが空であるか判定します。
SFCError Merge( SFXLinkedHashMap< K, V > const & collection )
ハッシュマップを統合します。
Void Remove( KeyType key )
指定されたキーを持つペア要素を削除します。
SFCError Set( SFXLinkedHashMap< K, V > const & collection )
指定されたペア要素(キーと値のペア)を設定します。またはハッシュマップを設定します。
SFCError Set( KeyType key , ValueType value )
指定されたペア要素(キーと値のペア)を設定します。またはハッシュマップを設定します。
Void SetRatio( UInt16 param )
[廃止予定] ハッシュテーブルの大きさを拡張する割合を設定します。
Void SetThreshold( UInt16 param )
[廃止予定] ハッシュテーブルの大きさを拡張する閾値を設定します。
SFCError Swap( KeyType destination , KeyType source )
指定されたキーを持つペア要素の値を交換します。
ValueType operator[]( KeyType key )
指定されたキーを持つペア要素の値を取得します。
KeyEnumerator
ハッシュマップのペア要素のキーに対応するキー列挙子を保持するクラスです。
KeyIterator
ハッシュマップのペア要素のキーに対応するキー反復子を保持するクラスです。
ValueEnumerator
ハッシュマップのペア要素の値に対応する値列挙子を保持するクラスです。
ValueIterator
ハッシュマップのペア要素の値に対応する値反復子を保持するクラスです。

SFXLinkedHashMap::SFXLinkedHashMap
SFXLinkedHashMap クラスのコンストラクタです。
[ public, explicit ]
SFXLinkedHashMap(Void);
[ public, explicit ]
SFXLinkedHashMap(
    UInt16 threshold   // 指定しても使用されません
    UInt16 ratio       // 指定しても使用されません
);

解説

デフォルトの実装は、何も行いません。

[Note] 廃止予定

引数付きのコンストラクタは、SFXOldHashmap クラスとの互換性のためだけに存在します。 SophiaFramework UNIVERSE 6.0 で廃止されますので、明示的に使用しないことを推奨します。


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

解説

この関数は、このハッシュマップを空にします。 このハッシュマップに割り当てられていたメモリ領域は解放されます。

この関数を実行した後、ハッシュマップのサイズは 0 になります。

キーが文字列(SFXAnsiString / SFXWideString 型)である場合、 キーである文字列も自動的に解放されます。

[Caution] 注意

キーや値がクラスインスタンスや 4 バイトよりも大きなデータへのポインタの場合、 ポインタが指すメモリ領域は解放されません。

ハッシュマップをクリアする前に、 delete 文を使用して明示的にその領域を解放する必要があります。 さもなければ、メモリリークが発生します。

[Note] 注意
この関数は、このハッシュマップがスコープから外れるタイミングで自動的に呼び出されます。

使用例

SFXLinkedHashMap<SFXAnsiString, SInt32> strmap;
 
...

strmap.Clear();   // ハッシュマップを空にする

参照

SFXLinkedHashMap::Remove | SFXLinkedHashMap::GetSize


SFXLinkedHashMap::ContainsKey
指定されたキーを持つペア要素が含まれるか判定します。
[ public, const ]
Bool ContainsKey(
    KeyType key   // 存在するか調べるキー
);

戻り値

  • 指定されたキーを持つペア要素が存在するとき: true
  • そうでないとき: false

解説

この関数は、このハッシュマップに指定されたキーを持つペア要素(キーと値)が含まれるか判定します。

使用例

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

参照

SFXLinkedHashMap::ContainsValue


SFXLinkedHashMap::Get
指定されたキーを持つペア要素の値を取得します。
[ public, const ]
ValueType Get(
    KeyType key            // 取得する値を持つペア要素のキー
    BoolPtr found = null   // キーの有無
);

戻り値

このハッシュマップに指定されたキーを持つペア要素があれば、ペア要素の値を返します。

存在しない場合は、null または 0 を返します。

解説

この関数は、このハッシュマップ内の指定されたキーを持つペア要素の値を取得します。

指定されたキーを持つペア要素が存在する場合、第 2 引数 found に true が渡されます。 そうでない場合は、false が渡されます。

[Caution] 注意
指定されたキーを持つペア要素が存在しない場合、エラーは発生せず、 この関数は 0 または null を返します。

使用例

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

参照

SFXLinkedHashMap::operator[] | SFXLinkedHashMap::Set


SFXLinkedHashMap::GetFirstKeyEnumerator
ハッシュマップの最初のペア要素のキーに対応するキー列挙子を取得します。
[ public, const ]
KeyEnumerator GetFirstKeyEnumerator(Void);

戻り値

このハッシュマップの最初のペア要素のキーに対応するキー列挙子

解説

この関数は、このハッシュマップの最初のペア要素のキーに対応するキー列挙子を取得します。

参照

SFXLinkedHashMap::GetFirstKeyIterator | SFXLinkedHashMap::GetFirstValueIterator | SFXLinkedHashMap::GetFirstValueEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetFirstKeyIterator
ハッシュマップの最初のペア要素のキーに対応するキー反復子を取得します。
[ public ]
KeyIterator GetFirstKeyIterator(Void);

戻り値

このハッシュマップの最初のペア要素のキーに対応するキー反復子

解説

この関数は、このハッシュマップの最初のペア要素のキーに対応するキー反復子を取得します。

参照

SFXLinkedHashMap::GetFirstKeyEnumerator | SFXLinkedHashMap::GetFirstValueEnumerator | SFXLinkedHashMap::GetFirstValueIterator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetFirstValueEnumerator
ハッシュマップの最初のペア要素の値に対応する値列挙子を取得します。
[ public, const ]
ValueEnumerator GetFirstValueEnumerator(Void);

戻り値

このハッシュマップの最初のペア要素の値に対応する値列挙子

解説

この関数は、このハッシュマップの最初のペア要素の値に対応する値列挙子を取得します。

参照

SFXLinkedHashMap::GetFirstValueIterator | SFXLinkedHashMap::GetFirstKeyIterator | SFXLinkedHashMap::GetFirstKeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetFirstValueIterator
ハッシュマップの最初のペア要素の値に対応する反復子を取得します。
[ public ]
ValueIterator GetFirstValueIterator(Void);

戻り値

このハッシュマップの最初のペア要素の値に対応する反復子

解説

この関数は、このハッシュマップの最初のペア要素の値に対応する反復子を取得します。

参照

SFXLinkedHashMap::GetFirstValueEnumerator | SFXLinkedHashMap::GetFirstKeyIterator | SFXLinkedHashMap::GetFirstKeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetKeyEnumerator
ハッシュマップのペア要素のキーに対応するキー列挙子を取得します。
[ public, const ]
KeyEnumerator GetKeyEnumerator(
    SInt32 index   // キー列挙子の開始位置
);
[ public, const ]
KeyEnumerator GetKeyEnumerator(Void);

戻り値

このハッシュマップのペア要素のキーに対応するキー列挙子

解説

この関数は、指定された開始位置のペア要素のキーに対応するキー列挙子を取得します。

[Note] 注意

引数に 0 以下の値を指定した場合、 この関数は SFXLinkedHashMap::GetFirstKeyEnumerator 関数と同等です。

引数にこのハッシュマップのサイズ以上の値を指定した場合、 この関数は SFXLinkedHashMap::GetLastValueIterator 関数と同等です。

index 引数を指定しない場合は、このハッシュマップの最初のペア要素のキーに対応するキー列挙子を取得します。 この場合、この関数は SFXLinkedHashMap::GetFirstKeyEnumerator 関数と同等です。

参照

SFXLinkedHashMap::GetFirstKeyEnumerator | SFXLinkedHashMap::GetLastKeyEnumerator | SFXLinkedHashMap::GetKeyIterator | SFXLinkedHashMap::GetValueIterator | SFXLinkedHashMap::GetValueEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetKeyIterator
ハッシュマップのペア要素のキーに対応するキー反復子を取得します。
[ public ]
KeyIterator GetKeyIterator(
    SInt32 index   // キー反復子の開始位置
);
[ public ]
KeyIterator GetKeyIterator(Void);

戻り値

このハッシュマップのペア要素のキーに対応するキー反復子

解説

この関数は、指定された開始位置のペア要素のキーに対応するキー反復子を取得します。

index 引数を指定しない場合は、このハッシュマップの最初のペア要素のキーに対応するキー反復子を取得します。 この場合、この関数は SFXLinkedHashMap::GetFirstKeyIterator 関数と同等です。

参照

SFXLinkedHashMap::GetFirstKeyIterator | SFXLinkedHashMap::GetKeyEnumerator | SFXLinkedHashMap::GetValueEnumerator | SFXLinkedHashMap::GetValueIterator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetLastKeyEnumerator
ハッシュマップの最後のペア要素のキーに対応するキー列挙子を取得します。
[ public, const ]
KeyEnumerator GetLastKeyEnumerator(Void);

戻り値

このハッシュマップの最後のペア要素のキーに対応するキー列挙子

解説

この関数は、このハッシュマップの最後のペア要素のキーに対応するキー列挙子を取得します。

参照

SFXLinkedHashMap::GetLastKeyIterator | SFXLinkedHashMap::GetLastValueIterator | SFXLinkedHashMap::GetLastValueEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetLastKeyIterator
ハッシュマップの最後のペア要素のキーに対応するキー反復子を取得します。
[ public ]
KeyIterator GetLastKeyIterator(Void);

戻り値

このハッシュマップの最後のペア要素のキーに対応するキー反復子

解説

この関数は、このハッシュマップの最後のペア要素のキーに対応するキー反復子を取得します。

参照

SFXLinkedHashMap::GetLastKeyEnumerator | SFXLinkedHashMap::GetLastValueEnumerator | SFXLinkedHashMap::GetLastValueIterator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetLastValueEnumerator
ハッシュマップの最後のペア要素の値に対応する値列挙子を取得します。
[ public, const ]
ValueEnumerator GetLastValueEnumerator(Void);

戻り値

このハッシュマップの最後のペア要素の値に対応する値列挙子

解説

この関数は、このハッシュマップの最後のペア要素の値に対応する値列挙子を取得します。

参照

SFXLinkedHashMap::GetLastValueIterator | SFXLinkedHashMap::GetLastKeyIterator | SFXLinkedHashMap::GetLastKeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetLastValueIterator
ハッシュマップの最後のペア要素の値に対応する値反復子を取得します。
[ public ]
ValueIterator GetLastValueIterator(Void);

戻り値

このハッシュマップの最後のペア要素の値に対応する値反復子

解説

この関数は、このハッシュマップの最後のペア要素の値に対応する値反復子を取得します。

参照

SFXLinkedHashMap::GetLastValueEnumerator | SFXLinkedHashMap::GetLastKeyIterator | SFXLinkedHashMap::GetLastKeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


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

戻り値

常に 0 を返します。

解説

この関数は、常に 0 を返します。

この API は、 SFXOldHashmap (SophiaFramework UNIVERSE 5.1.8 以前は SFXHashmap という名前だった) クラスとの互換性のためだけに存在します。

[Note] 廃止予定

SophiaFramework UNIVERSE 6.0 で廃止されますので、使用しないことを推奨します。

参照

SFXLinkedHashMap::SetRatio


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

戻り値

このハッシュマップのサイズ(ペア要素の数)。

解説

この関数は、このハッシュマップのサイズ(ペア要素の数)を取得します。


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

戻り値

常に 45 (単位: %)を返します。

解説

この関数は、常に 45 (単位: %)を返します。

この API は、 SFXOldHashmap (SophiaFramework UNIVERSE 5.1.8 以前は SFXHashmap という名前だった) クラスとの互換性のためだけに存在します。

[Note] 廃止予定

SophiaFramework UNIVERSE 6.0 で廃止されますので、使用しないことを推奨します。

参照

SFXLinkedHashMap::SetThreshold


SFXLinkedHashMap::GetValueEnumerator
ハッシュマップのペア要素の値に対応する値列挙子を取得します。
[ public, const ]
ValueEnumerator GetValueEnumerator(
    SInt32 index   // 値列挙子の開始位置
);
[ public, const ]
ValueEnumerator GetValueEnumerator(Void);

戻り値

このハッシュマップのペア要素の値に対応する値列挙子

解説

この関数は、指定された開始位置のペア要素の値に対応する値列挙子を取得します。

[Note] 注意

引数に 0 以下の値を指定した場合、 この関数は SFXLinkedHashMap::GetFirstValueEnumerator 関数と同等です。

引数にこのハッシュマップのサイズ以上の値を指定した場合、 この関数は SFXLinkedHashMap::GetLastValueEnumerator 関数と同等です。

index 引数を指定しない場合は、このハッシュマップの最初のペア要素の値に対応する値列挙子を取得します。 この場合、この関数は SFXLinkedHashMap::GetFirstValueEnumerator 関数と同等です。

参照

SFXLinkedHashMap::GetFirstValueEnumerator | SFXLinkedHashMap::GetLastValueEnumerator | SFXLinkedHashMap::GetValueIterator | SFXLinkedHashMap::GetKeyIterator | SFXLinkedHashMap::GetKeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


SFXLinkedHashMap::GetValueIterator
ハッシュマップのペア要素の値に対応する値反復子を取得します。
[ public ]
ValueIterator GetValueIterator(
    SInt32 index   // 値反復子の開始位置
);
[ public ]
ValueIterator GetValueIterator(Void);

戻り値

このハッシュマップのペア要素の値に対応する値反復子

解説

この関数は、指定された開始位置のペア要素の値に対応する値反復子を取得します。

[Note] 注意

引数に 0 以下の値を指定した場合、 この関数は SFXLinkedHashMap::GetFirstValueIterator 関数と同等です。

引数にこのハッシュマップのサイズ以上の値を指定した場合、 この関数は SFXLinkedHashMap::GetLastValueIterator 関数と同等です。

index 引数を指定しない場合は、このハッシュマップの最初のペア要素の値に対応する値反復子を取得します。 この場合、この関数は SFXLinkedHashMap::GetFirstValueIterator 関数と同等です。

参照

SFXLinkedHashMap::GetFirstValueIterator | SFXLinkedHashMap::GetLastValueIterator | SFXLinkedHashMap::GetValueEnumerator | SFXLinkedHashMap::GetKeyIterator | SFXLinkedHashMap::GetKeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator


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

戻り値

  • このハッシュマップが空であるとき: true
  • そうでないとき: false

解説

この関数は、このハッシュマップが空であるか判定します。

参照

SFXLinkedHashMap::EmptyInstance


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

戻り値

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

解説

この関数は、このハッシュマップと指定されたハッシュマップを統合します。

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


SFXLinkedHashMap::Remove
指定されたキーを持つペア要素を削除します。
[ public ]
Void Remove(
    KeyType key   // 削除するペア要素のキー
);

解説

この関数は、このハッシュマップから指定したキーを持つペア要素(キーと値)を削除します。

キーが文字列(SFXAnsiString / SFXWideString 型)である場合、 キーである文字列も自動的に解放されます。

[Caution] 注意

キーや値がクラスインスタンスや 4 バイトよりも大きなデータへのポインタの場合、 ポインタが指すデータは自動的に解放されません。

それらのデータは、ハッシュマップをクリアする直前に、 delete 文を使用して明示的に解放する必要があります。 さもなければ、メモリリークが発生します。

参照

SFXLinkedHashMap::Set | SFXLinkedHashMap::Clear


SFXLinkedHashMap::Set
指定されたペア要素(キーと値のペア)を設定します。またはハッシュマップを設定します。
[ public ]
SFCError Set(
    SFXLinkedHashMap< K, V > const & collection   // 設定するハッシュマップ
);
[ public ]
SFCError Set(
    KeyType key       // 設定するキー
    ValueType value   // 設定する値
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMOERY
  • キーが空文字列であるとき: SFERR_INVALID_PARAM

解説

この関数は、指定されたペア要素(キーと値のペア)をこのハッシュマップに設定します。 またはこのハッシュマップを指定されたハッシュマップに設定します。

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

[Note] 空文字列

空文字列とは、 SFXAnsiString::EmptyInstance / SFXWideString::EmptyInstance 関数の戻り値のことです。

使用例

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

参照

SFXLinkedHashMap::Get | SFXLinkedHashMap::operator[] | SFXAnsiString::EmptyInstance | SFXWideString::EmptyInstance


SFXLinkedHashMap::SetRatio
[廃止予定] ハッシュテーブルの大きさを拡張する割合を設定します。
[ public ]
Void SetRatio(
    UInt16 param   // 指定しても使用されません
);

解説

この関数は、何も行いません。 指定された値は、SFXLinkedHashMap クラス内で使用されません。

この API は、 SFXOldHashmap (SophiaFramework UNIVERSE 5.1.8 以前は SFXHashmap という名前だった) クラスとの互換性のためだけに存在します。

[Note] 廃止予定

SophiaFramework UNIVERSE 6.0 で廃止されますので、使用しないことを推奨します。

参照

SFXLinkedHashMap::GetRatio


SFXLinkedHashMap::SetThreshold
[廃止予定] ハッシュテーブルの大きさを拡張する閾値を設定します。
[ public ]
Void SetThreshold(
    UInt16 param   // 指定しても使用されません
);

解説

この関数は、何も行いません。 指定された値は、SFXLinkedHashMap クラス内で使用されません。

この API は、 SFXOldHashmap (SophiaFramework UNIVERSE 5.1.8 以前は SFXHashmap という名前だった) クラスとの互換性のためだけに存在します。

[Note] 廃止予定

SophiaFramework UNIVERSE 6.0 で廃止されますので、使用しないことを推奨します。

参照

SFXLinkedHashMap::GetThreshold


SFXLinkedHashMap::Swap
指定されたキーを持つペア要素の値を交換します。
[ public ]
SFCError Swap(
    KeyType destination   // 交換先のキー
    KeyType source        // 交換元のキー
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 指定されたキーを持つペア要素が存在しないとき: SFERR_INVALID_PARAM

解説

この関数は、指定したキーを持つペア要素の値を交換します。

使用例

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

SFXLinkedHashMap::ContainsValue
指定された値を持つペア要素が含まれるか判定します。
[ public, const ]
Bool ContainsValue(
    ValueType value   // 存在するか調べる値
);

戻り値

  • 指定された値を持つペア要素が存在するとき: true
  • そうでないとき: false

解説

この関数は、このハッシュマップに指定された値を持つペア要素(キーと値)が含まれるか判定します。

使用例

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

参照

SFXLinkedHashMap::ContainsKey


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

戻り値

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

解説

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

参照

SFXLinkedHashMap::IsEmpty


SFXLinkedHashMap::Equals
指定されたハッシュマップと等しいか判定します。
[ public, const ]
Bool Equals(
    SFXLinkedHashMap< K, V > const & collection   // 比較するハッシュマップ
);

戻り値

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

解説

この関数は、このハッシュマップが指定されたハッシュマップと等しいか判定します。

具体的には、2 つのハッシュマップに同じペア要素(キーと値)が同じ順序で格納されているか調べます。

[Caution] 注意
キーまたは値がポインタである場合、ポインタのアドレス値だけを比較します。

SFXLinkedHashMap::operator[]
指定されたキーを持つペア要素の値を取得します。
[ public, const ]
ValueType operator[](
    KeyType key   // 取得するキーの位置
);

戻り値

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

存在しない場合は、null または 0 を返します。

解説

このオペレーターは、このハッシュマップ内の指定したキーを持つペア要素の値を取得します。

[Caution] 注意
指定したキーを持つペア要素が存在しない場合、エラーは発生せず、 このオペレーターは 0 または null を返します。

参照

SFXLinkedHashMap::Get | SFXLinkedHashMap::Set


SFXLinkedHashMap::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;
};

解説

このクラスは、ハッシュマップのペア要素のキーに対応するキー列挙子を保持するクラスです。

GetNext 次の要素を取得します。要素がない場合 null または 0 を返します。
GetPrevious 前の要素を取得します。要素がない場合 null または 0 を返します。
GetValue 現在の要素に対する値を取得します。無効な場合は null を返します。
HasNext 次の要素があるか調べます。
HasPrevious 前の要素があるか調べます。
IsValid 列挙子が有効であるか判定します。

参照

SFXLinkedHashMap::KeyIterator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::GetKeyEnumerator | SFXLinkedHashMap::GetKeyIterator | SFXLinkedHashMap::GetValueEnumerator | SFXLinkedHashMap::GetValueIterator


SFXLinkedHashMap::KeyIterator
ハッシュマップのペア要素のキーに対応するキー反復子を保持するクラスです。
[ public ]

SFMTYPEDEFCLASS(KeyIterator)
class KeyIterator  {
    public:
        explicit            KeyIterator             (Void);
        SFCError            SetValue                (ValueType value);
        KeyType             GetNext                 (Void);
        KeyType             GetPrevious             (Void);
        ValueType           GetValue                (Void) const;
        Bool                HasNext                 (Void) const;
        Bool                HasPrevious             (Void) const;
        Bool                IsValid                 (Void) const;
        SFCError            Insert                  (KeyType key, ValueType value);
        Void                Remove                  (Void);
};

解説

このクラスは、ハッシュマップのペア要素のキーに対応するキー反復子を保持するクラスです。

SetValue 反復子が指す要素に対する値の内容を指定した値で設定します。
GetNext 次の要素を取得します。要素がない場合 null または 0 を返します。
GetPrevious 前の要素を取得します。要素がない場合 null または 0 を返します。
GetValue 現在の要素に対する値を取得します。無効な場合は null を返します。
HasNext 次の要素があるか調べます。
HasPrevious 前の要素があるか調べます。
IsValid 反復子が有効であるか判定します。
Insert 反復子が指す要素の次に要素を挿入します。
Remove 反復子が指す要素を削除します。

参照

SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::ValueEnumerator | SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::GetKeyEnumerator | SFXLinkedHashMap::GetKeyIterator | SFXLinkedHashMap::GetValueEnumerator | SFXLinkedHashMap::GetValueIterator


SFXLinkedHashMap::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;
};

解説

このクラスは、ハッシュマップのペア要素の値に対応する値列挙子を保持するクラスです。

GetNext 次の要素を取得します。要素がない場合 null または 0 を返します。
GetPrevious 前の要素を取得します。要素がない場合 null または 0 を返します。
GetKey 現在の要素に対するキーを取得します。無効な場合は null を返します。
HasNext 次の要素があるか調べます。
HasPrevious 前の要素があるか調べます。
IsValid 列挙子が有効であるか判定します。

参照

SFXLinkedHashMap::ValueIterator | SFXLinkedHashMap::KeyEnumerator | SFXLinkedHashMap::KeyIterator | SFXLinkedHashMap::GetKeyEnumerator | SFXLinkedHashMap::GetKeyIterator | SFXLinkedHashMap::GetValueEnumerator | SFXLinkedHashMap::GetValueIterator


SFXLinkedHashMap::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;
        SFCError            Insert                  (KeyType key, ValueType value);
        Void                Remove                  (Void);
};

解説

このクラスは、ハッシュマップのペア要素の値に対応する値反復子を保持するクラスです。

Set 反復子が指す要素に対する値の内容を指定した値で設定します。
GetNext 次の要素を取得します。要素がない場合 null または 0 を返します。
GetPrevious 前の要素を取得します。要素がない場合 null または 0 を返します。
GetKey 現在の要素に対するキーを取得します。無効な場合は null を返します。
HasNext 次の要素があるか調べます。
HasPrevious 前の要素があるか調べます。
IsValid 反復子が有効であるか判定します。
Insert 反復子が指す要素の次に要素を挿入します。
Remove 反復子が指す要素を削除します。

参照

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