std::experimental::ranges:: WeaklyIncrementable
|
헤더 파일에 정의됨
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
concept
bool
WeaklyIncrementable
=
|
(ranges TS) | |
WeaklyIncrementable<I>
개념은 (전위 및 후위 증가 연산자로) 증가시킬 수 있는 타입의 요구 사항을 명시합니다. 증가 연산은 동등성 보존(equality-preserving)일 필요가 없으며, 해당 타입은
EqualityComparable
일 필요가 없습니다.
i
를
I
타입의 객체라고 하자.
i
가 전위 증가와 후위 증가의 정의역에 모두 속할 때,
증가 가능(incrementable)
하다고 말한다.
WeaklyIncrementable<I>
는 다음 조건을 만족할 때만 충족된다:
- ++ i 와 i ++ 는 동일한 도메인을 가집니다;
-
만약
i
가 증가 가능하다면:
- ++ i 와 i ++ 모두 i 를 다음 요소로 진행시킵니다; 그리고
- ++ i 는 i 와 동일한 객체를 참조합니다.
동등성 보존
표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존(equality preserving) 합니다.
- 표현식의 입력은 피연산자들로 구성됩니다.
- 표현식의 출력은 결과와 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.
동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체에 대한 이러한 표현식의 두 번의 평가는 해당 입력 객체에 대한 명시적인 중간 수정이 없는 한 동일한 출력을 가져야 합니다.
참고 사항
WeaklyIncrementable
타입의 경우,
a
가
b
와 같다고 해서
++
a
가
++
b
와 같다는 것을 의미하지는 않습니다. 이러한 타입에 대한 알고리즘은 단일 패스(single pass)로 동작해야 하며 동일한 값을 두 번 이상 통과하려는 시도를 절대 해서는 안 됩니다.