Namespaces
Variants

std::experimental::ranges:: OutputIterator

From cppreference.net
template < class I, class T >

concept bool OutputIterator =
Iterator < I > && Writable < I, T > &&
requires ( I i, T && t ) {
* i ++ = std:: forward < T > ( t ) ; // 等価性保存は要求されない

} ;
(ranges TS)

OutputIterator コンセプトは Iterator の改良版であり、 T によってエンコードされた型と値カテゴリの値を( Writable を介して)書き込むために使用できるという要件を追加します。 EqualityComparable は必須ではありません。

E decltype ( ( E ) ) T となる式とし、 i を型 I のデリファレンス可能なオブジェクトとする。 OutputIterator<I, T> は、 * i ++ = E ; の効果が * i = E ; ++ i ; と等価である場合にのみ満たされる。

等価性保存

式は、等しい入力が与えられた場合に等しい出力をもたらす場合、 equality preserving であると言います。

  • 式への入力は、そのオペランドで構成されます。
  • 式からの出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。

等価性を保持することが要求されるすべての式は、さらに stable(安定性) が要求されます:同じ入力オブジェクトに対するそのような式の2回の評価は、それらの入力オブジェクトに対する明示的な変更がない限り、等しい出力を持たなければなりません。

注記

C++標準での出力イテレータ要件とは異なり、 OutputIterator はRanges TSではイテレータカテゴリタグが定義されている必要はありません。

出力イテレータに対するアルゴリズムはシングルパスであるべきです。