Namespaces
Variants

std::experimental::ranges:: distance

From cppreference.net
namespace {

constexpr /* unspecified */ distance = /* unspecified */ ;

}
(ranges TS)
(customization point object)
호출 시그니처
template < Iterator I, Sentinel < I > S >
constexpr ranges :: difference_type_t < I > distance ( I first, S last ) ;
(1)
template < Range R >
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ;
(2)
template < SizedRange R >
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ;
(3)

first last 사이의 거리, 또는 범위 r 의 시작과 끝 사이의 거리를 반환합니다.

1) 만약 SizedSentinel < S, I > 가 만족되면, 다음에 상응합니다 return last - first ; . 그렇지 않으면, first 에서 last 까지 도달하는 데 필요한 증가 횟수를 반환합니다. 만약 [ first , last ) 가 범위를 나타내지 않으면, I S 는 동일한 타입이어야 하며 SizedSentinel 를 모델로 해야 하고, [ last , first ) 가 범위를 나타내야 합니다. 그렇지 않으면 동작은 정의되지 않습니다.
2) 다음에 해당함 return ranges:: distance ( ranges:: begin ( r ) , ranges:: end ( r ) ) ; .
3) 다음에 해당함: return ranges:: size ( r ) ; .

오버로드 인스턴스화 (2,3) 는 인스턴스화 지점 이전에 <experimental/ranges/range> 헤더가 포함되지 않은 경우 형식이 올바르지 않을 수 있습니다.

목차

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

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

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

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

반환값

first last 사이의 거리, 또는 범위 r 의 시작과 끝 사이의 거리입니다.

예제

참고 항목

두 반복자 사이의 거리를 반환합니다
(함수 템플릿)
주어진 거리만큼 반복자를 전진시킵니다
(함수 템플릿)
반복자를 증가시킵니다
(함수 템플릿)
반복자를 감소시킵니다
(함수 템플릿)
상수 시간에 크기를 계산할 수 있는 범위의 크기를 구합니다
(커스터마이제이션 포인트 객체)