名前空間
変種
操作

std::experimental::ranges::ForwardIterator

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
イテレータライブラリ
イテレータのコンセプト
間接呼び出し可能コンセプト
                                                  
                                                  
                                                  
共通アルゴリズム要件
                                                  
Concept utilities
Iterator utilities and operations
Iterator traits
イテレータアダプタ
ストリームイテレータ
 
template< class I >

concept bool ForwardIterator =
    InputIterator<I> &&
    DerivedFrom<ranges::iterator_category_t<I>, ranges::forward_iterator_tag> &&
    Incrementable<I> &&

    Sentinel<I, I>;
(ranges TS)

ForwardIterator<I> コンセプトは、等価比較とマルチパス保証を追加することで InputIterator を洗練させたものです。

フォワードイテレータの == のドメインは、同じ基となるシーケンスに対するイテレータのドメインですが、同じ型の値初期化されたイテレータ同士は比較可能であり、等しいと評価されなければなりません。

範囲 [is) 内のフォワードイテレータから取得されたポインタと参照は、[is) が範囲を示し続ける限り有効でなければなりません。

I 型のデリファレンス可能なイテレータを ab とします。ForwardIterator<I> は、以下の場合にのみ満たされます。

  • a == b++a == ++b を意味すること。
  • ([](X x){ ++x; }(a), *a)*a と等価であること。すなわち、a のコピーをインクリメントしても、a のデリファレンスの結果に影響を与えないこと。

これは *マルチパス保証* として知られています。

[編集] 注釈

フォワードイテレータは「stashing」することはできません。イテレータ自身に含まれるオブジェクトへの参照を返すことはできません。なぜなら、そのような参照はフォワードイテレータの破棄によって無効になるからです。

English 日本語 中文(简体) 中文(繁體)