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

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


RWGSlistIterator(type)

形式

#include <rw/gslist.h>
declare(RWGSlist, type)

RWGSlist(type) a ;
RWGSlistIterator(type) I(a);

説明

クラス RWGSlist(type) の反復子で、一重リンクリストのすべての要素に順次アクセスできます。各要素には、最初から最後の順序でアクセスします。

すべての Rogue Wave 反復子と同様に、作成直後の "現在の項目" は未定義で、operator() か他の有効な操作によって、ユーザーが定義する必要があります。

反復子がコレクションの最後を越えると、反復子は無効になります。さらに使用し続けると、予期できない結果をもたらします。

記述を簡単にするため、テスト関数に対して次のような仮想の typedef が使用されています。この関数については、RWGSlist(type) を参照してください。

    typedef RWBoolean (*yourTester)(const type*, const void*);

持続性

なし

公開コンストラクタ

RWGSlistIterator(type)( RWGSlist(type)& list);

RWGSlist(type) リストの反復子を作成します。作成直後の反復子の位置は不定です。

公開メンバー演算子

type*
operator()();

反復子を次の項目に進め、その項目を返します。コレクションの最後に達すると NULL を返します。

void
operator++();

反復子を 1 項目先に進めます。

void
operator+=(size_t n);

反復子を n 項目先に進めます。

公開メンバー関数

RWBoolean
atFirst() const;

反復子がリストの最初にあれば TRUE を、なければ FALSE を返します。

RWBoolean
atLast() const;

反復子がリストの最後にあれば TRUE を、なければ FALSE を返します。

type*
findNext(yourTester t,const type* d);

関数 t が、d と一致するとみなした次の項目に、反復子を進め、その項目を返します。一致する項目がなければ NULL を返し、反復子の位置は不定になります。

type*
findNextReference(const type* e);

アドレス e を持つ次の項目に反復子を移動し、その項目を返します。そのような項目がなければ NULL を返し、反復子の位置は不定になります。

type*
insertAfterPoint(type* a);

反復子の現在位置の後に項目 a を挿入し、その項目を返します。反復子の位置は変わりません。

type*
key() const;

反復子の現在位置にある項目を返します。

type*
remove();

現在指している位置にある項目を取り除き、その項目を返します。その後、反復子はリスト内の直前の項目の位置に置かれます。一重リンクリストとして実装されているので、この関数はリスト全体を走査して取り除くリンクの前のリンクを探すため、操作の効率は悪くなります。

type*
removeNext(yourTester t, const type* d);

関数 t が、d と一致すると認めた次の項目に、反復子を移動し、その項目を取り除いて返します。一致する項目がなければ NULL を返し、反復子の位置は不定になります。

type*
removeNextReference(const type* e);

アドレス e を持つ次の項目に反復子を移動し、その項目を取り除いて返します。そのような項目がなければ NULL を返し、反復子の位置は不定になります。

void
reset();

反復子を初期状態にリセットします。

void
toFirst();

反復子をリストの最初に移動します。

void
toLast();

反復子をリストの最後に移動します。