2017-05-19 1 views
1

:(dereferenceable状態の場合) http://www.cplusplus.com/reference/iterator/OutputIterator/なぜSTL出力イテレータは一度だけ割り当てできますか?ここで述べたように

は左辺値として逆参照することができます。 これは、代入文の左側として逆参照されます。 逆参照されると、その反復子の値は逆参照できなくなる可能性があります。

それに次の有効な表現の例があります:

*a = t 

この式(間接参照)した後、私は再びderefernceすることはできませんが。
例えば私が行うことができない理由を私は理解していない:最初の式の後に

*a = t2 

を。

+0

これまでにインクリメントしていた場合は、再度参照解除することができます。 – Angew

答えて

3

出力イテレータは、ターミナル、パイプ、ソケットなどの出力ストリームに使用されるためです。データがストリームに書き込まれると、それは他の場所に送られたとみなされ、したがって変更することはできません。

0

トリビアルイテレータと入力イテレータを含む他のイテレータタイプは、イテレータが参照解除されたときに返される値型の概念を定義します。ただし、逆参照演算子(単項演算子*)は出力イテレータに使用可能な値を返さないため、この概念は出力イテレータには適用されません。逆参照演算子を使用できる唯一のコンテキストは、出力イテレーターを介した割り当てです。* x = t。入力イテレータと出力イテレータはほぼ対称的な概念ですが、値のアクセスと格納が対称ではないという重要な意味があります。入力イテレータ演算子*は一意の型を返さなければなりませんが、出力イテレータの場合は式x = t、operator =がユニークな型をとらなければならない理由はありません。したがって、出力イテレータには一意の「値型」は必要ありません。

関連する問題