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

5.2. イテレータ

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

図 5.2. イテレータ クラス

イテレータ クラス

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

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

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

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

// 誤った使用例
{
    SFUIterator it;      // 初期化されていない状態のイテレータ
    if (it.HasNext()) {  // 関数を呼び出してはいけません
          ...
    }
}
      
// 正しい使用例
{
    SFUIterator it;                 // 初期化されていない状態のイテレータ
    it = linkedList.GetIterator();  // 代入することで初期化される
    if (it.HasNext()) {             // 関数を呼び出しても問題ありません
          ...
    }
}