バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWTPtrSortedDlistIterator<T,C>

形式

#include<rw/tpsrtdli.h>
RWTPtrSortedDlist<T,C> dl;
RWTPtrSortedDlistIterator<T,C> itr(dl);

標準 C++ ライブラリ依存


注 - RWTPtrSortedDlistIterator には標準 C++ ライブラリが必要です。

説明

Tools.h++ 7 には、RWTPtrSortedDlistIterator には、Tools.h++ 6.x に付属するコンテナ反復子との下位互換性を持つ新しい標準ライブラリにもとづくコレクションへの反復子インタフェースが用意されています。

RWTPtrSortedDlist に対する繰り返し順序は、コンテナに格納された値に適用されるため、比較子オブジェクトパラメータ C に依存します。

この反復子が参照する現在の項目は、作成後も、reset() の呼び出し後も定義されていません。反復子は、前置インクリメントか operator() を用いて進められた後に有効になります。

operator++operator() の場合は、最後の要素を越えて反復すると、ブール型の FALSE に相当する値を返します。一度この状態に達してからも増分し続けると、reset() が呼び出されるまで、FALSE に相当する値を返します。

持続性

なし

#include<rw/tpsrtdli.h>
#include<iostream.h>
#include<rw/cstring.h>

int main(){
   RWTPtrSortedDlist<RWCString,less<RWCString> > a;
   RWTPtrSortedDlistIterator<RWCString,less<RWCString> > itr(a);
   a.insert(new RWCString("John"));
   a.insert(new RWCString("Steve"));
   a.insert(new RWCString("Mark"));
   a.insert(new RWCString("Steve"));

   for(;itr();)
     cout << *itr.key() <<endl;

   return 0;
}

プログラム出力

John
Mark
Steve
Steve

公開コンストラクタ

RWTPtrSortedDlistIterator<T,C>(RWTPtrSortedDlist<T,C>& l);

リスト l の反復子を作成します。反復子は、未定義状態から始まり、最初の要素がアクセス可能になる前まで進める必要があります。

公開メンバー演算子

T*
operator()();

self を次の要素に進め、結果反復子を間接参照し、そのキーを返します。反復子がコンテナ内の最後の項目を越えた場合は、ブール型の FALSE に相当する NULL ポインタの要素を返します。

RWBoolean
operator++();

自分自身を次の要素に進めます。反復子が初期状態に戻された、あるいは作成されたばかりの場合、自分自身は最初の要素を参照します。反復の前に自分自身がリスト内の最後の関連付けを参照した場合、自分自身は未定義の値を指し、FALSE を返します。それ以外の場合は、TRUE を返します。


注 - 後置インクリメント演算子は提供されていません。
RWBoolean
operator+=(size_type n);

operator++()n 回適用されたのと同様に機能します。

RWBoolean
operator--();

self を直前の要素の後ろに移動します。反復子が初期状態に戻された、あるいは作成されたばかりの場合、この演算子は FALSE を返します。それ以外の場合は、TRUE を返します。self が最初の要素を参照する場合は、取り消し状態になります。自分自身がリストの最後の値を越えて反復した場合は、リストの最後の項目を参照します。


注 - 後置デクリメント演算子は提供されていません。
RWBoolean
operator-=(size_type n);

operator--()n 回適用されたのと同様に機能します。

公開メンバー関数

RWTPtrSortedDlist<T,C>*
container() const;

反復されるコレクションへのポインタを返します。

T*
findNext(const T* a);

自分自身を順方向に反復することによって、式 (*t == *a)TRUE になるような最初の要素を返します。それ以外の場合は、nil を返します。自分自身に見つけた項目を参照させておくか、「終端を越えた」にしておきます。

T*
findNext(RWBoolean(*fn)(T*, void*), void* d);

自分自身を順方向に反復することによって、式 ((*fn)(t,d))TRUE になるような最初の要素を返します。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。。

   bool yourTester(const T* a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。それ以外の場合は、nil を返します。自分自身に見つけた項目を参照させておくか、「終端を越えた」にしておきます。

T*
key();

自分自身が指す格納された値を返します。自分自身がリスト内の値を参照していない場合の影響は定義されていません。

T*
remove();

自分自身が指す格納された値を返し、コレクションからそれを削除します。自分自身がリスト内の値を参照していない場合の影響は定義されていません。自分自身を以前の項目を参照したままにするか、初期状態にしたままにしておきます。

T*
removeNext(const T*);

自分自身を順方向に反復することによって、式 (*t == *a)TRUE になるような最初の要素を返して削除します。それ以外の場合は、NULL を返します。自分自身を以前の項目を参照したままにするか、初期状態にしたままにしておきます。

T*
removeNext(RWBoolean(*fn)(T*, void*), void* d);

自分自身を順方向に反復することによって、式 ((*fn)(t,d))TRUE になるような最初の要素を返して削除します。fn が指すユーザー定義テスター関数は、次のプロトタイプを持っていなければなりません。

   bool yourTester(const T* a, void* d);

クライアントデータは、パラメータ d を通して渡すことができます。それ以外の場合は、NULL を返します。自分自身を以前の項目を参照するか、初期状態にしたままにしておきます。

void
reset();
void
reset(RWTPtrSortedDlist<T,C>& l);

あとで前に進められた反復子がコレクションの最初の要素を参照できるように、反復子を初期状態に戻します。引数なしで reset() を使用すると、現在のコンテナ上の反復子が初期状態に戻されます。reset()RWTPtrSortedDlist を使用すると、そのコンテナ上の反復子が初期状態に戻されます。