名前空間
変種
操作

std::experimental::ranges::WeaklyIncrementable

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

concept bool WeaklyIncrementable =
    Semiregular<I> &&
    requires(I i) {
        typename ranges::difference_type_t<I>;
        requires SignedIntegral<ranges::difference_type_t<I>>;
        { ++i } -> Same<I>&; /* 等価性を保持する必要はない */
        i++; /* 等価性を保持する必要はない */

    };
(ranges TS)

concept WeaklyIncrementable<I> は、インクリメント可能(前置および後置インクリメント演算子)な型に対する要件を指定します。インクリメント操作は等価性を保持する必要はなく、型は EqualityComparable である必要もありません。

I 型のオブジェクトを i とします。i は、前置および後置インクリメントの両方のドメインにある場合に、インクリメント可能 であると言われます。WeaklyIncrementable<I> が満たされるのは、以下の条件の場合のみです。

  • ++i および i++ のドメインが同じであること。
  • i がインクリメント可能である場合、
    • ++i および i++ は両方とも `i` を次の要素に進めます。
    • ++i は `i` と同じオブジェクトを参照します。

[編集] 等価性保持

式が**等価性保持**であるとは、等しい入力に対して等しい出力を生成することを意味します。

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

等価性保持が要求されるすべての式は、さらに**安定**である必要があります。同じ入力オブジェクトでそのような式の2回の評価は、これらの入力オブジェクトの明示的な介入的な変更がない限り、等しい出力を持ちます。

[編集] 注釈

WeaklyIncrementable 型では、ab が等しいからといって、++a++b が等しいとは限りません。そのような型に対するアルゴリズムは、シングルパスである必要があり、同じ値を二度通過しようとしてはなりません。

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