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

ポインタ配列管理テンプレート [詳解]

#include <TnbPointerVector.h>

+ CPointerVectorT< TYP > の継承関係図

公開メンバ関数

INDEX Add (TYP *P)
 [追加] 要素一つ追加 [詳解]
 
virtual TYP *const & At (INDEX index) const
 [取得] 要素の参照取得. [詳解]
 
const_iterator begin (void) const
 [反復] 先頭const_iterator. [詳解]
 
virtual INT_PTR Compare (const IConstCollectionT< TYP * > &c) const
 [確認] 比較. [詳解]
 
 CPointerVectorT (const CPointerVectorT< TYP > &v)
 コピーコンストラクタ [詳解]
 
 CPointerVectorT (size_t size=0)
 コンストラクタ [詳解]
 
virtual void Deserialize (const IDeserializer &ds)
 [処理] デシリアライズ [詳解]
 
const_iterator end (void) const
 [反復] 最後const_iterator. [詳解]
 
INDEX Find (const IChecker &checker, INDEX startIndex=0, bool boIsReverse=false) const
 [検索] 条件一致要素の検索. [詳解]
 
INDEX Find (const IConstCollectionT< TYP * > &t, const IComparatorT< TYP * > &comparator, INDEX startIndex=0) const
 [検索] 指定配列の検索. [詳解]
 
INDEX Find (const IConstCollectionT< TYP * > &t, INDEX startIndex=0) const
 [検索] 指定配列の検索. [詳解]
 
INDEX Find (const TYP * &t, const IComparatorT< TYP * > &comparator, INDEX startIndex=0) const
 [検索] 指定要素の検索. [詳解]
 
INDEX Find (const TYP * &t, INDEX startIndex=0) const
 [検索] 指定要素の検索. [詳解]
 
INDEX FindMax (const IComparatorT< TYP * > &comparator, const TYP * &def) const
 [検索] 要素の最大検索. [詳解]
 
INDEX FindMax (const TYP * &def) const
 [検索] 要素の最大検索. [詳解]
 
INDEX FindMin (const IComparatorT< TYP * > &comparator, const TYP * &def) const
 [検索] 要素の最小検索. [詳解]
 
INDEX FindMin (const TYP * &def) const
 [検索] 要素の最小検索. [詳解]
 
virtual TYP * Get (INDEX index) const
 [取得] 要素の取得. [詳解]
 
virtual size_t GetElements (size_t size, TYP * *_P, INDEX offset=0) const
 [取得] 複数要素取り出し. [詳解]
 
TYP * GetEx (INDEX index) const
 [取得] 要素の取得. [詳解]
 
virtual size_t GetSize (void) const
 [取得] 要素数取得 [詳解]
 
bool Insert (INDEX index, TYP *P)
 [挿入] 要素一つ挿入 [詳解]
 
bool IsEmpty (void) const
 [確認] 要素の有無確認. [詳解]
 
virtual bool IsEqual (const IConstCollectionT< TYP * > &c) const
 [確認] 比較. [詳解]
 
bool IsInRange (INDEX index) const
 [確認] INDEXの有効確認. [詳解]
 
virtual bool Lock (DWORD dwTime=INFINITE) const
 [排他] ロック [詳解]
 
 operator size_t (void) const
 [取得] 要素数取得. [詳解]
 
bool operator!= (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
INT_PTR operator- (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
bool operator< (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
bool operator<= (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
CPointerVectorToperator= (const CPointerVectorT< TYP > &other)
 [代入] コピーオペレータ [詳解]
 
bool operator== (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
bool operator> (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
bool operator>= (const TNB::IConstCollectionT< TYP * > &t) const
 [確認] 比較 [詳解]
 
TYP * operator[] (INDEX index) const
 [取得] 要素参照取得 [詳解]
 
bool Remove (INDEX index)
 [削除] 要素削除 [詳解]
 
void RemoveAll (void)
 [削除] 空化 [詳解]
 
size_t RemoveElements (INDEX index, size_t size=0)
 [削除] 要素削除. [詳解]
 
virtual void Serialize (ISerializer &_sr) const
 [処理] シリアライズ [詳解]
 
bool Set (INDEX index, TYP *P)
 [設定] 要素の設定 [詳解]
 
void SetSize (size_t size)
 [操作] サイズ指定 [詳解]
 
virtual void Unlock (void) const
 [排他] アンロック [詳解]
 
virtual ~CPointerVectorT (void)
 デストラクタ [詳解]
 

詳解

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

ポインタ配列管理テンプレート

newで確保した一つ型のポインタ配列を管理します。

動的に配列を増やすことができます。
コピーや削除で不要になったポインタは自動的に delete します。
複製しても、ポインタ先の実体は複製しません。ですので、実体を操作すると、
コピー元にも影響が出ます。
注意
new[] で確保したポインタは管理できません。
引数
TYP保持する型(コピーできなくてもよし)
参照
IConstCollectionT を実装しています。ポインタ保護のためICollectionT は実装していません。
覚え書き
IConstCollectionT の TYP は TYP* になります。
必要ファイル
TnbPointerVector.h
日付
06/04/01 新規作成
06/04/21 コンストラクト時に追加サイズ指定可能にした。
06/04/22 ポインタ保護のため、継承から実装に切り替えた。
06/05/17 CVectorTの仕様変更のため、本クラスも修正。
06/05/19 「VectorのPH」から「PHのVector」に変更。
06/08/01 GetConstPointer/GetPointerに依存しないつくりに変更。
06/08/30 シリアライズはサポート出来ないようにした。
07/03/15 index,size管理を unsignedに変更。
09/02/12 Insert() 追加。
11/03/02 RemoveElements() 追加。

TnbPointerVector.h60 行目に定義があります。

構築子と解体子

◆ CPointerVectorT() [1/2]

CPointerVectorT ( size_t  size = 0)
explicit

コンストラクタ

覚え書き
指定のメモリ確保時の追加サイズを設定します。
データは保持しません
引数
sizeメモリ確保時の追加サイズ

TnbPointerVector.h72 行目に定義があります。

◆ CPointerVectorT() [2/2]

CPointerVectorT ( const CPointerVectorT< TYP > &  v)

コピーコンストラクタ

引数
vコピー元

TnbPointerVector.h81 行目に定義があります。

◆ ~CPointerVectorT()

virtual ~CPointerVectorT ( void  )
virtual

デストラクタ

TnbPointerVector.h120 行目に定義があります。

関数詳解

◆ Add()

INDEX Add ( TYP *  P)

[追加] 要素一つ追加

引数
Pデータのポインタ。newで確保したものに限ります。
戻り値
INVALID_INDEX失敗。
上記以外追加したINDEX。

TnbPointerVector.h173 行目に定義があります。

◆ At()

virtual TYP *const & At ( INDEX  index) const
virtual

[取得] 要素の参照取得.

引数
indexインデックス
戻り値
参照
例外
CIndexOutOfBoundsExceptionインデックスが範囲外であることを示すためにスローされます。

IConstCollectionT< TYP * >を実装しています。

TnbPointerVector.h112 行目に定義があります。

◆ begin()

const_iterator begin ( void  ) const
inherited

[反復] 先頭const_iterator.

先頭要素を指す反復子を取得

戻り値
const_iterator

TnbCollection.h246 行目に定義があります。

◆ Compare()

virtual INT_PTR Compare ( const IConstCollectionT< TYP * > &  c) const
virtualinherited

[確認] 比較.

コンパレータ( IComparatorT のサブクラス)を使用して、全要素を比較します。

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

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

TnbCollection.h595 行目に定義があります。

◆ Deserialize()

virtual void Deserialize ( const IDeserializer ds)
virtualinherited

[処理] デシリアライズ

引数
dsデシリアライザー。
例外
CNotSupportExceptionサポートしていないことを示すためにスローされます。

ISerializableを実装しています。

ICollectionT< TYP * >で再実装されています。

TnbCollection.h384 行目に定義があります。

◆ end()

const_iterator end ( void  ) const
inherited

[反復] 最後const_iterator.

最後要素の次を指す反復子を取得

戻り値
const_iterator

TnbCollection.h253 行目に定義があります。

◆ Find() [1/5]

INDEX Find ( const IChecker &  checker,
INDEX  startIndex = 0,
bool  boIsReverse = false 
) const
inherited

[検索] 条件一致要素の検索.

チェッカー( IChecker のサブクラス)を使用して、検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
checkerチェッカー
startIndex検索開始インデックス。
boIsReverse省略すると条件に一致を探します。 trueを指定すると条件不一致を探します。
戻り値
INVALID_INDEX未発見
それ以外発見したインデックス

TnbCollection.h400 行目に定義があります。

◆ Find() [2/5]

INDEX Find ( const IConstCollectionT< TYP * > &  t,
const IComparatorT< TYP * > &  comparator,
INDEX  startIndex = 0 
) const
inherited

[検索] 指定配列の検索.

コンパレータ( IComparatorT のサブクラス)を使用して、検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
t配列
comparatorコンパレーター
startIndex検索開始インデックス。
戻り値
INVALID_INDEX未発見
それ以外発見したインデックス

TnbCollection.h427 行目に定義があります。

◆ Find() [3/5]

INDEX Find ( const IConstCollectionT< TYP * > &  t,
INDEX  startIndex = 0 
) const
inherited

[検索] 指定配列の検索.

IComparatorT::GetDefault() で得られるコンパレータを使用して検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
t配列
startIndex検索開始インデックス。
戻り値
INVALID_INDEX未発見
それ以外発見したインデックス

TnbCollection.h467 行目に定義があります。

◆ Find() [4/5]

INDEX Find ( const TYP * &  t,
const IComparatorT< TYP * > &  comparator,
INDEX  startIndex = 0 
) const
inherited

[検索] 指定要素の検索.

コンパレータ( IComparatorT のサブクラス)を使用して、検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
t要素
comparatorコンパレーター
startIndex検索開始インデックス。
戻り値
INVALID_INDEX未発見
それ以外発見したインデックス

TnbCollection.h482 行目に定義があります。

◆ Find() [5/5]

INDEX Find ( const TYP * &  t,
INDEX  startIndex = 0 
) const
inherited

[検索] 指定要素の検索.

IComparatorT::GetDefault() で得られるコンパレータを使用して検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
t要素
startIndex検索開始インデックス。
戻り値
INVALID_INDEX未発見
それ以外発見したインデックス

TnbCollection.h508 行目に定義があります。

◆ FindMax() [1/2]

INDEX FindMax ( const IComparatorT< TYP * > &  comparator,
const TYP * &  def 
) const
inherited

[検索] 要素の最大検索.

コンパレータ( IComparatorT のサブクラス)を使用して、比較検索します。

引数
comparatorコンパレーター
def最小値(初期値)
戻り値
INVALID_INDEX未発見
それ以外最大を持つインデックス

TnbCollection.h521 行目に定義があります。

◆ FindMax() [2/2]

INDEX FindMax ( const TYP * &  def) const
inherited

[検索] 要素の最大検索.

IComparatorT::GetDefault() で得られるコンパレータを使用して比較検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
def最小値(初期値)
戻り値
INVALID_INDEX未発見
それ以外最大を持つインデックス

TnbCollection.h545 行目に定義があります。

◆ FindMin() [1/2]

INDEX FindMin ( const IComparatorT< TYP * > &  comparator,
const TYP * &  def 
) const
inherited

[検索] 要素の最小検索.

コンパレータ( IComparatorT のサブクラス)を使用して、比較検索します。

引数
comparatorコンパレーター
def最大値(初期値)
戻り値
INVALID_INDEX未発見
それ以外最小を持つインデックス

TnbCollection.h558 行目に定義があります。

◆ FindMin() [2/2]

INDEX FindMin ( const TYP * &  def) const
inherited

[検索] 要素の最小検索.

IComparatorT::GetDefault() で得られるコンパレータを使用して比較検索します。

覚え書き
範囲を限定したい場合、 CConstOffsetAdapterT を使用します。
引数
def最大値(初期値)
戻り値
INVALID_INDEX未発見
それ以外最小を持つインデックス

TnbCollection.h582 行目に定義があります。

◆ Get()

virtual TYP * Get ( INDEX  index) const
virtualinherited

[取得] 要素の取得.

覚え書き
非スレッドセーブメソッドです。 複数のスレッドからアクセスがある場合、 GetEx() を使用してください。
引数
indexインデックス
戻り値
内容
例外
CIndexOutOfBoundsExceptionインデックスが範囲外であることを示すためにスローされます。

CVectorT< TYP * >で再実装されています。

TnbCollection.h298 行目に定義があります。

◆ GetElements()

virtual size_t GetElements ( size_t  size,
TYP * *  _P,
INDEX  offset = 0 
) const
virtualinherited

[取得] 複数要素取り出し.

引数
[in]size取り出すデータの数。
[out]_Pコピーするポインタ。size 分の領域がある必要があります。
[in]offset取り出し開始のインデックス。省略すると0。
戻り値
コピーした数

TnbCollection.h322 行目に定義があります。

◆ GetEx()

TYP * GetEx ( INDEX  index) const
inherited

[取得] 要素の取得.

引数
indexインデックス
戻り値
内容
例外
CIndexOutOfBoundsExceptionインデックスが範囲外であることを示すためにスローされます。

TnbCollection.h309 行目に定義があります。

◆ GetSize()

virtual size_t GetSize ( void  ) const
virtual

[取得] 要素数取得

戻り値
要素数

IConstCollectionT< TYP * >を実装しています。

TnbPointerVector.h217 行目に定義があります。

◆ Insert()

bool Insert ( INDEX  index,
TYP *  P 
)

[挿入] 要素一つ挿入

引数
index追加するINDEX。
Pデータのポインタ。newで確保したものに限ります。
戻り値
true成功。
false失敗。

TnbPointerVector.h185 行目に定義があります。

◆ IsEmpty()

bool IsEmpty ( void  ) const
inherited

[確認] 要素の有無確認.

覚え書き
GetSize()の戻り値が0か否かでチェックしています。
戻り値
true要素なし
false要素有り

TnbCollection.h346 行目に定義があります。

◆ IsEqual()

virtual bool IsEqual ( const IConstCollectionT< TYP * > &  c) const
virtualinherited

[確認] 比較.

コンパレータ( IComparatorT のサブクラス)を使用して、全要素を比較します。

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

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

TnbCollection.h624 行目に定義があります。

◆ IsInRange()

bool IsInRange ( INDEX  index) const
inherited

[確認] INDEXの有効確認.

覚え書き
GetSize()の戻り値を使用してチェックしています。
引数
indexインデックス
戻り値
true指定Indexは有効。
false指定Indexは無効(範囲外)。

TnbCollection.h358 行目に定義があります。

◆ Lock()

virtual bool Lock ( DWORD  dwTime = INFINITE) const
virtual

[排他] ロック

引数
dwTimeダミー。省略してください。
戻り値
常にtrue。

ISynchronizedを実装しています。

TnbPointerVector.h101 行目に定義があります。

◆ operator size_t()

operator size_t ( void  ) const
inherited

[取得] 要素数取得.

戻り値
要素数

TnbCollection.h268 行目に定義があります。

◆ operator!=()

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

[確認] 比較

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

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

◆ operator-()

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

[確認] 比較

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

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

◆ operator<()

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

[確認] 比較

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

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

◆ operator<=()

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

[確認] 比較

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

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

◆ operator=()

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

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

引数
otherコピー元
戻り値
自分の参照

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

◆ operator==()

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

[確認] 比較

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

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

◆ operator>()

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

[確認] 比較

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

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

◆ operator>=()

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

[確認] 比較

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

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

◆ operator[]()

TYP * operator[] ( INDEX  index) const

[取得] 要素参照取得

引数
indexインデックス
戻り値
内容
例外
CIndexOutOfBoundsExceptionインデックスが範囲外であることを示すためにスローされます。

TnbPointerVector.h208 行目に定義があります。

◆ Remove()

bool Remove ( INDEX  index)

[削除] 要素削除

引数
indexインデックス
戻り値
true削除成功
false失敗

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

◆ RemoveAll()

void RemoveAll ( void  )

[削除] 空化

TnbPointerVector.h138 行目に定義があります。

◆ RemoveElements()

size_t RemoveElements ( INDEX  index,
size_t  size = 0 
)

[削除] 要素削除.

引数
indexインデックス
size削除数。省略すると0。0を指定するとそれ以降全部削除します。
戻り値
INVALID_SIZEエラー。
戻り値
それ以外 削除した数。

TnbPointerVector.h150 行目に定義があります。

◆ Serialize()

virtual void Serialize ( ISerializer _sr) const
virtual

[処理] シリアライズ

引数
[out]_srシリアライザー。
例外
CNotSupportExceptionサポートしていないことを示すためにスローされます。

IConstCollectionT< TYP * >を再実装しています。

TnbPointerVector.h227 行目に定義があります。

◆ Set()

bool Set ( INDEX  index,
TYP *  P 
)

[設定] 要素の設定

引数
indexインデックス
Pデータのポインタ。newで確保したものに限ります。
戻り値
true設定成功
false失敗(インデックスが範囲外、など)

TnbPointerVector.h197 行目に定義があります。

◆ SetSize()

void SetSize ( size_t  size)

[操作] サイズ指定

覚え書き
大きくすることも小さくすることも出来ます。
大きくした時、そのデータは NULL で埋められます。
小さくした時、不必要にあったデータは delete されます。
引数
sizeサイズ

TnbPointerVector.h162 行目に定義があります。

◆ Unlock()

virtual void Unlock ( void  ) const
virtual

[排他] アンロック

ISynchronizedを実装しています。

TnbPointerVector.h104 行目に定義があります。