TNB Library
公開メンバ関数 | 全メンバ一覧
IQueueT< TYP > 構造体テンプレートabstract

キュー型情報管理インターフェーステンプレート [詳解]

#include <TnbQueue.h>

+ IQueueT< TYP > の継承関係図

公開メンバ関数

virtual INDEX Add (const TYP &t)=0
 [追加] 要素一つ追加. [詳解]
 
virtual size_t AddElements (size_t size, const TYP *P=NULL)=0
 [追加] 複数要素追加. [詳解]
 
virtual size_t EraseElements (size_t size)
 [削除] 要素削除. [詳解]
 
virtual TYP Take (void)
 [取得] 先頭要素取り出し. [詳解]
 
virtual size_t TakeElements (size_t size, TYP *P=NULL)=0
 [取得] 複数要素取り出し [詳解]
 
CVectorT< TYP > TakeoutToVector (size_t size)
 [取得] 要素配列取出し. [詳解]
 
virtual ~IQueueT (void)
 デストラクタ [詳解]
 

詳解

template<typename TYP>
struct TNB::IQueueT< TYP >

キュー型情報管理インターフェーステンプレート

情報をFIFO(First In First Out)で管理するクラスです。 
Add系メソッドで追加し、Take系メソッドで古いのほうから情報を取り出します。
引数
TYP保持する型(コピー可能の型に限る)
参照
本IF を使うサブクラスは ICollectionT も一緒に実装します。
日付
06/04/17 CRingQueueを抽象化して作成
06/05/15 Cloneを廃止。
06/05/23 AddElementsなど、IFに移行したメソッドの削除。
06/08/08 ICollectionT の継承を廃止。
07/03/15 index,size管理を unsignedに変更。

TnbQueue.h42 行目に定義があります。

構築子と解体子

◆ ~IQueueT()

virtual ~IQueueT ( void  )
virtual

デストラクタ

TnbQueue.h45 行目に定義があります。

関数詳解

◆ Add()

virtual INDEX Add ( const TYP &  t)
pure virtual

[追加] 要素一つ追加.

覚え書き
非スレッドセーブメソッドです。 複数のスレッドからアクセスがある場合、 AddEx() を使用してください。
引数
t要素。
戻り値
INVALID_INDEX失敗。
上記以外追加したINDEX。

CRingQueueT< BYTE >, CRingQueueT< CArrayPtrHandleT< TCHAR > >, CRingQueueT< CVectorT< BYTE >, false, CVectorT< BYTE > >, CRingQueueT< TParam >, CListQueueT< TYP >, CPriorityQueueT< TYP >, CRingQueueT< TYP, ISI, INV >, CRingQueueT< TYP, false, TYP >, CSharedQueueT< TYP, SIZ >, CStackT< TYP >で実装されています。

◆ AddElements()

virtual size_t AddElements ( size_t  size,
const TYP *  P = NULL 
)
pure virtual

[追加] 複数要素追加.

最後に追加します。

引数
size追加するデータの数。
P追加するデータ列のポインタ。省略すると TYP()が代入されます。
戻り値
INVALID_SIZEエラー。
それ以外追加した数。

CRingQueueT< BYTE >, CRingQueueT< CArrayPtrHandleT< TCHAR > >, CRingQueueT< CVectorT< BYTE >, false, CVectorT< BYTE > >, CBlockingQueueT< CVectorT< BYTE > >, CRingQueueT< TParam >, CListQueueT< TYP >, CPriorityQueueT< TYP >, CRingQueueT< TYP, ISI, INV >, CRingQueueT< TYP, false, TYP >, CBlockingQueueT< TYP, ISI, INV >, CSharedQueueT< TYP, SIZ >, CStackT< TYP >で実装されています。

◆ EraseElements()

virtual size_t EraseElements ( size_t  size)
virtual

[削除] 要素削除.

キューから指定数のデータを削除します。

引数
size削除したい数。
戻り値
INVALID_SIZEエラー。
それ以外削除した数。

TnbQueue.h103 行目に定義があります。

◆ Take()

virtual TYP Take ( void  )
virtual

[取得] 先頭要素取り出し.

キューから削除します

戻り値
要素内容
例外
CEmptyException空であることを示すためにスローされます。

CPriorityQueueT< TYP >, CStackT< TYP >で再実装されています。

TnbQueue.h85 行目に定義があります。

◆ TakeElements()

virtual size_t TakeElements ( size_t  size,
TYP *  P = NULL 
)
pure virtual

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

覚え書き
指定バッファにコピーし、キューから削除します。
引数
[in]size取り出す数。
[out]P取り出すバッファ。 NULLなら取得しません。
戻り値
INVALID_SIZEエラー。
それ以外取り出した数。

CRingQueueT< BYTE >, CRingQueueT< CArrayPtrHandleT< TCHAR > >, CRingQueueT< CVectorT< BYTE >, false, CVectorT< BYTE > >, CBlockingQueueT< CVectorT< BYTE > >, CRingQueueT< TParam >, CListQueueT< TYP >, CPriorityQueueT< TYP >, CRingQueueT< TYP, ISI, INV >, CRingQueueT< TYP, false, TYP >, CBlockingQueueT< TYP, ISI, INV >, CSharedQueueT< TYP, SIZ >, CStackT< TYP >で実装されています。

◆ TakeoutToVector()

CVectorT< TYP > TakeoutToVector ( size_t  size)

[取得] 要素配列取出し.

指定バッファにコピーし、キューから削除します。

引数
[in]size取り出す数。
戻り値
要素配列。配列がEmptyの場合、指定数のデータがなかったという意味。

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