std::experimental::ranges:: distance
|
헤더에 정의됨
<experimental/ranges/iterator>
|
||
|
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 의 시작과 끝 사이의 거리를 반환합니다.
[
first
,
last
)
가 범위를 나타내지 않으면,
I
와
S
는 동일한 타입이어야 하며
SizedSentinel
를 모델로 해야 하고,
[
last
,
first
)
가 범위를 나타내야 합니다. 그렇지 않으면 동작은 정의되지 않습니다.
오버로드 인스턴스화 (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 의 시작과 끝 사이의 거리입니다.
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
참고 항목
|
두 반복자 사이의 거리를 반환합니다
(함수 템플릿) |
|
|
주어진 거리만큼 반복자를 전진시킵니다
(함수 템플릿) |
|
|
반복자를 증가시킵니다
(함수 템플릿) |
|
|
반복자를 감소시킵니다
(함수 템플릿) |
|
|
상수 시간에 크기를 계산할 수 있는 범위의 크기를 구합니다
(커스터마이제이션 포인트 객체) |