std::ranges::stride_view<V>::iterator<Const>::operator++,--,+=,-=
cppreference.net에서 온 글
constexpr /*iterator*/& operator++();
|
(1) | (C++23 이후) |
constexpr void operator++( int );
|
(2) | (C++23 이후) |
constexpr /*iterator*/ operator++( int )
requires ranges::forward_range<Base>;
|
(3) | (C++23 이후) |
constexpr /*iterator*/& operator--()
requires ranges::bidirectional_range<Base>;
|
(4) | (C++23 이후) |
constexpr /*iterator*/ operator--( int )
requires ranges::bidirectional_range<Base>;
|
(5) | (C++23 이후) |
constexpr /*iterator*/& operator+=( difference_type n )
requires ranges::random_access_range<Base>;
|
(6) | (C++23 이후) |
constexpr /*iterator*/& operator-=( difference_type n )
requires ranges::random_access_range<Base>;
|
(7) | (C++23 이후) |
iterator를 증가시키거나 감소시킵니다.
current_, end_, stride_, missing_을(를) iterator의 데이터 멤버라고 합시다.
1) 다음과 동일합니다:
호출 전에
missing_ = ranges::advance(current_, stride_, end_);
return *this
current_는 end_와 같지 않아야 합니다.2)
++*this;와(과) 동일합니다.3)
auto tmp = *this; ++*this; return tmp;와(과) 동일합니다.4) 다음과 동일합니다:
ranges::advance(current_, missing_ - stride_);
missing_ = 0;
return *this;
5)
auto tmp = *this; --*this; return tmp;와(과) 동일합니다.6) 다음과 동일합니다:
if (n > 0)
{
ranges::advance(current_, stride_ * (n - 1));
missing_ = ranges::advance(current_, stride_, end_);
}
else if (n < 0)
{
ranges::advance(current_, stride_ * n + missing_);
missing_ = 0;
}
return *this;
n > 0인 경우, 이 함수 호출 전에 ranges::distance(current_, end_)는 stride_ * (n - 1)보다 커야 합니다.
n < 0인 경우 ranges::distance(current_, end_)는 항상 (양수가 아닌) stride_ * (n - 1)보다 크다는 점에 유의하세요.7)
return *this += -n;매개변수
| n | - | 현재 위치 기준 상대적 위치 |
반환값
1,4,6,7)
*
this
2)
(없음)
3,5)
변경 전에 생성된
*
this
의 복사본
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참고 항목
|
(C++23)
|
반복자 연산 수행
(함수) |