Namespaces
Variants

std::experimental::ranges:: advance

From cppreference.net
namespace {

constexpr /* unspecified */ advance = /* unspecified */ ;

}
(ranges TS)
(customization point object)
호출 시그니처
template < Iterator I >
constexpr void advance ( I & i, ranges :: difference_type_t < I > n ) ;
(1)
template < Iterator I, Sentinel < I > S >
constexpr void advance ( I & i, S bound ) ;
(2)
template < Iterator I, Sentinel < I > S >
constexpr ranges :: difference_type_t < I > advance ( I & i, ranges :: difference_type_t < I > n, S bound ) ;
(3)

반복자 i n 회만큼 진행시키거나, bound 에 도달할 때까지 진행하며, 먼저 도달하는 조건을 기준으로 동작합니다.

1) 만약 I RandomAccessIterator 를 모델링하면, i + = n 와 동등합니다. 그렇지 않으면, i n 번 증가시킵니다 (만약 n 이 음수이면 감소시킵니다). n 이 음수이고 I BidirectionalIterator 를 모델링하지 않으면 동작은 정의되지 않습니다.
2) 만약 Assignable < I & , S > 가 만족된다면, 다음 코드와 동등합니다: i = std :: move ( bound ) .
그렇지 않으면, [ i , bound ) 가 범위를 나타내지 않을 경우, 동작은 정의되지 않습니다.
그렇지 않으면, SizedSentinel < S, I > 가 만족되는 경우, 다음과 동일합니다: ranges:: advance ( i, bound - i ) .
그렇지 않으면, i i == bound 가 될 때까지 증가합니다.
3) 만약 SizedSentinel < S, I > 가 만족되면, | n | >= | bound - i | 인 경우 ranges:: advance ( i, bound ) 와 동등하고, 그렇지 않은 경우 ranges:: advance ( i, n ) 와 동등합니다.
그렇지 않으면, n 이 음수인 경우 감소시키고, i n 번 증가시키거나(또는 감소시키거나) i == bound 가 될 때까지 수행하며, 먼저 도달하는 조건을 적용합니다.
만약 n > 0 이면, [ i , bound ) 는 범위를 나타내며; 만약 n == 0 이면, [ i , bound ) 또는 [ bound , i ) 가 범위를 나타내며; 만약 n < 0 이면, [ bound , i ) 가 범위를 나타내고, I S 는 동일한 타입이어야 하며, I BidirectionalIterator 를 모델링해야 합니다. 그렇지 않으면 동작은 정의되지 않습니다.

목차

커스터마이제이션 포인트 객체

이름 ranges::advance 사용자 정의 지점 객체 를 나타내며, 이는 함수 객체 로서 리터럴 Semiregular 클래스 타입(설명 목적으로 AdvanceT 로 표기)입니다. AdvanceT 의 모든 인스턴스는 동일합니다. 따라서 ranges::advance 는 자유롭게 복사할 수 있으며 그 복사본들은 상호 교환적으로 사용될 수 있습니다.

주어진 타입 집합 Args... 에 대해, std:: declval < Args > ( ) ... 가 위의 ranges::advance 인자 요구사항을 충족한다면, AdvanceT ranges :: Invocable < const AdvanceT, Args... > 를 만족합니다. 그렇지 않으면, AdvanceT 의 함수 호출 연산자 중 어느 것도 오버로드 해결에 참여하지 않습니다.

ranges::advance 가 정의된 모든 번역 단위에서, 이것은 동일한 사용자 지정 지점 객체의 인스턴스를 참조합니다. (이는 일 정의 규칙 을 위반하지 않으면서 인라인 함수와 함수 템플릿 같은 것들에서 자유롭게 사용될 수 있음을 의미합니다.)

반환값

1,2) (없음)
3) 한계에 도달하여 수행되지 않은 증감 연산의 횟수. 다시 말해, bound . 즉, n - M , 여기서 M i 의 시작 위치부터 종료 위치까지의 거리이며, 종료 위치가 시작 위치보다 앞선 경우 음수입니다.

예제

참고 항목

주어진 거리만큼 반복자를 전진시킴
(function template)
반복자와 센티넬 사이의 거리, 또는 범위의 시작과 끝 사이의 거리를 반환
(function template)
반복자를 증가시킴
(function template)
반복자를 감소시킴
(function template)