std::ranges::views:: counted
|
헤더 파일에 정의됨
<ranges>
|
||
|
inline
constexpr
/*unspecified*/
counted
=
/*unspecified*/
;
|
(C++20 이후) | |
|
호출 시그니처
|
||
|
template
<
class
Iterator,
class
DifferenceType
>
requires
/* see below */
|
(C++20 이후) | |
카운트된 뷰는 일부 반복자
i
와 음수가 아닌 정수
n
에 대한
카운트된 범위
[
i
,
n
)
의 요소들에 대한
view
를 제공합니다.
카운트된 범위
[
i
,
n
)
는
i
가 가리키는 요소로 시작하여
n
번의
++
i
적용 결과가 가리키는 요소(존재하는 경우)를 포함하지 않는
n
개의 요소들입니다.
만약
n
==
0
이면, 카운트된 범위는 유효하며 비어 있습니다. 그렇지 않으면, 카운트된 범위는
n
이 양수이고,
i
가 역참조 가능하며,
[
++
i
,
--
n
)
가 유효한 카운트된 범위일 때에만 유효합니다.
공식적으로,
it
과
count
가 표현식이고,
T
가
std::
decay_t
<
decltype
(
(
it
)
)
>
이며,
D
가
std::
iter_difference_t
<
T
>
라면,
-
만약
T가input_or_output_iterator를 만족하고 decltype ( ( count ) ) 가 std:: convertible_to < D > 를 만족하면,-
만약
T가contiguous_iterator를 만족하면, views:: counted ( it, count ) 는 표현식 동등 합니다 std:: span ( std:: to_address ( it ) , static_cast < std:: size_t > ( static_cast < D > ( count ) ) ) 와, -
그렇지 않고 만약
T가random_access_iterator를 만족하면, views:: counted ( it, count ) 는 표현식 동등 합니다 ranges:: subrange ( it, it + static_cast < D > ( count ) ) 와, - 그렇지 않으면, views:: counted ( it, count ) 는 표현식 동등 합니다 ranges:: subrange ( std:: counted_iterator ( it, count ) , std:: default_sentinel ) 와.
-
만약
- 그렇지 않으면, views:: counted ( it, count ) 는 잘못된 형식입니다.
목차 |
커스터마이제이션 포인트 객체
views::counted
이름은
커스터마이제이션 포인트 객체
를 나타내며, 이는
함수 객체
의 리터럴
리터럴
semiregular
클래스 타입의 상수입니다. 자세한 내용은
CustomizationPointObject
를 참조하십시오.
참고 사항
views::counted
는 범위가
count
개의 요소를 모두 제공할 수 있을 만큼 충분히 긴지 확인하지 않습니다: 해당 확인이 필요한 경우
views::
take
를 사용하십시오.
예제
#include <iostream> #include <ranges> int main() { const int a[]{1, 2, 3, 4, 5, 6, 7}; for (int i : std::views::counted(a, 3)) std::cout << i << ' '; std::cout << '\n'; const auto il = {1, 2, 3, 4, 5}; for (int i : std::views::counted(il.begin() + 1, 3)) std::cout << i << ' '; std::cout << '\n'; }
출력:
1 2 3 2 3 4
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| P2393R1 | C++20 | 정수 클래스 타입에서 std:: size_t 로의 암시적 변환이 유효하지 않을 수 있음 | 명시적으로 변경됨 |
참고 항목
|
(C++20)
|
다른
view
의 첫 N개 요소로 구성된
view
(클래스 템플릿) (range adaptor object) |
|
(C++20)
|
iterator-sentinel 쌍을
view
로 결합
(클래스 템플릿) |
|
(C++20)
|
범위의 끝까지 거리를 추적하는 iterator adaptor
(클래스 템플릿) |
|
(C++20)
(C++20)
|
특정 조건을 만족하는 요소의 개수를 반환
(알고리즘 함수 객체) |