TNB Library
公開メンバ関数 | 全メンバ一覧
CHashableT< TYP > クラステンプレート

HASH値保持テンプレートクラス. [詳解]

#include <TnbHashable.h>

+ CHashableT< TYP > の継承関係図

公開メンバ関数

const TYP & At (void) const
 [取得] 値参照取得 [詳解]
 
 CHashableT (const CHashableT< TYP > &t)
 コピーコンストラクタ [詳解]
 
 CHashableT (const TYP &t)
 [代入] 代入コンストラクタ [詳解]
 
 CHashableT (void)
 コンストラクタ. [詳解]
 
virtual INT_PTR Compare (const CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
virtual void Deserialize (const IDeserializer &ds)
 [処理] デシリアライズ. [詳解]
 
DWORD GetHashCode (void) const
 [取得] HASH値取得 [詳解]
 
virtual bool IsEqual (const CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
 operator const TYP & (void) const
 [取得] 値参照取得 [詳解]
 
bool operator!= (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
INT_PTR operator- (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
bool operator< (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
bool operator<= (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
CHashableToperator= (const CHashableT< TYP > &other)
 [代入] コピーオペレータ [詳解]
 
CHashableToperator= (const TYP &t)
 [代入] 代入オペレータ [詳解]
 
bool operator== (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
bool operator> (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
bool operator>= (const TNB::CHashableT< TYP > &t) const
 [確認] 比較 [詳解]
 
virtual void Serialize (ISerializer &_sr) const
 [処理] シリアライズ. [詳解]
 

詳解

template<typename TYP>
class TNB::CHashableT< TYP >

HASH値保持テンプレートクラス.

通常のオブジェクトにHASH値を付加するテンプレートです。主に、大きな型をコレクションで
使用する場合、ハッシュを付加することで、検索速度UPが期待できます。
ハッシュ値:
HASH値は以下の特徴があります。HashCalc() を作成する場合、以下の規則に従ってください。
    プロセス実行中に、変化のないオブジェクトは、一定の整数を返す。

    同じ内容のオブジェクトでも、異なるプロセスなら同じ整数とは限らない。

    2つのオブジェクトの内容が異なる場合、それぞれのハッシュ値は必ず一致しない。

    2つのオブジェクトの内容が同じ場合でも、それぞれのハッシュ値が一致するとは限らない。  
    ただし、極力同じ値になるようなハッシュ値であることが好ましい。

    異なる型同士では、ハッシュ値は意味を持たない。 
    
使用例
CStr 系は CalcHash() メソッドが既に用意してあるため以下のよう使用できます。

    CVectorT< CHashableT<CStr> > vhstr;     //宣言
            ;
    int f1 = vhstr.Find(CStr("ABCDE"));     
    
ハッシュ値計算作成例
他のものを使用したい場合、以下のように CalcHash() メソッドを、 TNB::HASH ネームスペース下に 作成します。

    namespace TNB
    {
      namespace HASH
      {
        // ハッシュ値計算.
        inline DWORD CalcHash(const TFoo& str)
        { 〜 }
      };
    };
    
覚え書き
ISerializable を持っています。シリアライズ可能です。
引数
TYP要素の型。
必要ファイル
TnbHashable.h
日付
06/09/12 新規

TnbHashable.h80 行目に定義があります。

構築子と解体子

◆ CHashableT() [1/3]

CHashableT ( void  )

コンストラクタ.

TnbHashable.h90 行目に定義があります。

◆ CHashableT() [2/3]

CHashableT ( const CHashableT< TYP > &  t)

コピーコンストラクタ

覚え書き
コピー元のハッシュ値を引き継ぎます。
引数
tコピー元

TnbHashable.h99 行目に定義があります。

◆ CHashableT() [3/3]

CHashableT ( const TYP &  t)

[代入] 代入コンストラクタ

覚え書き
要素の値からハッシュ値の計算をしています。
引数
t要素

TnbHashable.h108 行目に定義があります。

関数詳解

◆ At()

const TYP & At ( void  ) const

[取得] 値参照取得

戻り値
要素の参照

TnbHashable.h180 行目に定義があります。

◆ Compare()

virtual INT_PTR Compare ( const CHashableT< TYP > &  t) const
virtual

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

IComparableT< TNB::CHashableT< TYP > >を実装しています。

TnbHashable.h155 行目に定義があります。

◆ Deserialize()

virtual void Deserialize ( const IDeserializer ds)
virtual

[処理] デシリアライズ.

覚え書き
指定のデシリアライザーからに本オブジェクトに情報を取り込みます。
引数
[in]dsデシリアライザー

ISerializableを実装しています。

TnbHashable.h209 行目に定義があります。

◆ GetHashCode()

DWORD GetHashCode ( void  ) const

[取得] HASH値取得

戻り値
ハッシュ値

TnbHashable.h143 行目に定義があります。

◆ IsEqual()

virtual bool IsEqual ( const CHashableT< TYP > &  t) const
virtual

[確認] 比較

覚え書き
まず、ハッシュ値の比較を行い、同じなら実際の値を比較します。
引数
t比較対象
戻り値
true自分は t と同じ
false自分は t と異なる

IComparableT< TNB::CHashableT< TYP > >を再実装しています。

TnbHashable.h167 行目に定義があります。

◆ operator const TYP &()

operator const TYP & ( void  ) const

[取得] 値参照取得

戻り値
要素の参照

TnbHashable.h189 行目に定義があります。

◆ operator!=()

bool operator!= ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と異なる
false自分は t と同じ

TnbComparable.h98 行目に定義があります。

◆ operator-()

INT_PTR operator- ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
自分は t と同じ
1以上自分は t より大きい
0未満自分は t より小さい

TnbComparable.h82 行目に定義があります。

◆ operator<()

bool operator< ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t より小さい
false自分は t と同じか大きい

TnbComparable.h106 行目に定義があります。

◆ operator<=()

bool operator<= ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じか小さい
false自分は t より大きい

TnbComparable.h114 行目に定義があります。

◆ operator=() [1/2]

CHashableT & operator= ( const CHashableT< TYP > &  other)

[代入] コピーオペレータ

覚え書き
コピー元のハッシュ値を引き継ぎます。
引数
otherコピー元
戻り値
自分の参照

TnbHashable.h119 行目に定義があります。

◆ operator=() [2/2]

CHashableT & operator= ( const TYP &  t)

[代入] 代入オペレータ

覚え書き
要素の値からハッシュ値の計算をしています。
引数
t要素
戻り値
自分の参照

TnbHashable.h132 行目に定義があります。

◆ operator==()

bool operator== ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じ
false自分は t と異なる

TnbComparable.h90 行目に定義があります。

◆ operator>()

bool operator> ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t より大きい
false自分は t と同じか小さい

TnbComparable.h122 行目に定義があります。

◆ operator>=()

bool operator>= ( const TNB::CHashableT< TYP > &  t) const
inherited

[確認] 比較

引数
t比較対象
戻り値
true自分は t と同じか大きい
false自分は t より小さい

TnbComparable.h130 行目に定義があります。

◆ Serialize()

virtual void Serialize ( ISerializer _sr) const
virtual

[処理] シリアライズ.

覚え書き
指定のシリアライザーに本オブジェクトの保持している情報を出力します。
引数
[out]_srシリアライザー

ISerializableを実装しています。

TnbHashable.h199 行目に定義があります。