## 22.2 ストリーム反復子とコンテナ反復子との違い

通常のコンテナ反復子と異なり、ストリーム反復子で設定できるのは、要素に対する、変更不可の読み取り専用アクセスか、書き込み専用アクセスです。istream_iterator は、読み取り専用の反復子であり、要素にアクセスすることはできますが、割り当てによる変更はできません。これに対して ostream_iterator では、ストリームに対する書き込み専用のアクセスを提供します。

istream_iterator で `operator++` を呼び出すと、ストリームから新しい値が読み取られ、`const T` 値に保存されます。`T` は書き込まれる要素の型です。`const` 値は、定義上、割り当てによる上書きは禁止されており、間接参照演算子 `*` で参照することができます。反復子における、この要素の保存動作は、istream_iterator 固有の動作です。

さらに、コンテナ反復子と異なり、ストリーム反復子は、その使用をワンパスアルゴリズムに限定するために、前方参照で 1 度のみ要素にアクセスできるようになっています。ストリームの内容を繰り返し読み取る場合は、パスごとに個別の反復子を作成します。

istream_iterator には、テンプレート引数`Distance` があり、これは `ptrdiff_t` と定義されていますが、この実装では使用していません。ostream_iterator には距離型のテンプレート引数がないため、距離の概念はありません。

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。

OEM リリース, 1998 年 6 月