前のページ次のページ上に戻るホーム SophiaFramework 2.0

5.2. イテレータ

コレクション内の要素を列挙するにはイテレータを使います。

図 5.2. イテレータ クラス

イテレータ クラス

イテレータには単方向定数イテレータ (SFUConstIterator) 単方向イテレータ (SFUIterator)、 双方向定数イテレータ (SFUConstWIterator)、 双方向イテレータ (SFUWIterator) があります。

定数イテレータは、値を列挙して取得することはできますが、 定数イテレータを通じてコレクションの要素を書き換えることはできません。 単方向イテレータは順方向にたどって列挙することしかできませんが、 双方向イテレータであれば逆方向にたどって列挙することも可能です。

イテレータの使用方法については、 各コレクション クラスのセクションで説明します。

イテレータ クラスにはデフォルト コンストラクタが存在しますが、 デフォルト コンストラクタで構築されたイテレータに対しては、 デストラクタ以外の関数を呼び出すことはできません。 イテレータの性能を高めるために、 初期化チェックを行っていないためです。 初期化されていないイテレータの関数を呼び出すと、 アプリケーションは異常終了します。


// 誤った使用例

{

    SFUIterator it;      // 初期化されていない状態のイテレータ

    if (it.HasNext()) {  // 関数を呼び出してはいけません

          ...

    }

}

      

// 正しい使用例

{

    SFUIterator it;                 // 初期化されていない状態のイテレータ

    it = linkedList.GetIterator();  // 代入することで初期化される

    if (it.HasNext()) {             // 関数を呼び出しても問題ありません

          ...

    }

}