Namespaces
Variants

std::ranges:: views:: iota, std::ranges:: iota_view

From cppreference.net
Ranges library
Range adaptors
헤더 파일에 정의됨 <ranges>
template < std:: weakly_incrementable W,

std:: semiregular Bound = std:: unreachable_sentinel_t >
requires /*weakly-equality-comparable-with*/ < W, Bound > && std:: copyable < W >
class iota_view

: public ranges:: view_interface < iota_view < W, Bound >>
(1) (C++20부터)
namespace views {

inline constexpr /* 지정되지 않음 */ iota = /* 지정되지 않음 */ ;

}
(2) (C++20부터)
호출 시그니처
template < class W >

requires /* 아래 참조 */

constexpr /* 아래 참조 */ iota ( W && value ) ;
(C++20부터)
template < class W, class Bound >

requires /* 아래 참조 */

constexpr /* 아래 참조 */ iota ( W && value, Bound && bound ) ;
(C++20부터)
1) 초기값을 반복적으로 증가시켜 요소 시퀀스를 생성하는 범위 팩토리. 유한 또는 무한(제한 없음)일 수 있습니다.
2) views :: iota ( e ) views :: iota ( e, f ) 표현식 동등 합니다 iota_view < std:: decay_t < decltype ( ( e ) ) >> ( e ) iota_view ( e, f ) 에 각각 해당하며, 이는 모든 적절한 부분식 e f 에 대해 적용됩니다.

목차

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

views::iota 라는 이름은 커스터마이제이션 포인트 객체 를 나타내며, 이는 함수 객체 인 const 리터럴 semiregular 클래스 타입입니다. 자세한 내용은 CustomizationPointObject 를 참조하십시오.

데이터 멤버

멤버 정의
W value_ 시작 값
( 설명 전용 멤버 객체* )
Bound bound_ 센티널 값, 도달 불가능할 수 있음
( 설명 전용 멤버 객체* )

멤버 함수

iota_view 를 생성함
(public 멤버 함수)
iota_view 의 시작 반복자를 얻음
(public 멤버 함수)
iota_view 의 끝을 나타내는 sentinel을 얻음
(public 멤버 함수)
iota_view 가 비어 있는지 테스트함 (즉, 반복자와 sentinel이 동일한지 비교)
(public 멤버 함수)
(optional)
iota_view 의 크기를 얻음 (경계가 있을 때만 제공됨)
(public 멤버 함수)
std::ranges::view_interface 로부터 상속됨
(C++23)
범위의 시작을 가리키는 상수 반복자를 반환함
( std::ranges::view_interface<D> 의 public 멤버 함수)
(C++23)
범위의 상수 반복자에 대한 sentinel을 반환함
( std::ranges::view_interface<D> 의 public 멤버 함수)
파생된 뷰가 비어 있지 않은지 반환함, ranges::empty 가 적용 가능한 경우에만 제공됨
( std::ranges::view_interface<D> 의 public 멤버 함수)
파생된 뷰의 첫 번째 요소를 반환함, forward_range 를 만족할 때 제공됨
( std::ranges::view_interface<D> 의 public 멤버 함수)
파생된 뷰의 마지막 요소를 반환함, bidirectional_range common_range 를 모두 만족할 때만 제공됨
( std::ranges::view_interface<D> 의 public 멤버 함수)
파생된 뷰의 n 번째 요소를 반환함, random_access_range 를 만족할 때만 제공됨
( std::ranges::view_interface<D> 의 public 멤버 함수)

추론 가이드

중첩 클래스

반복자 타입
( 설명 전용 멤버 클래스* )
iota_view 가 범위 제한되어 있고 Bound W 가 동일한 타입이 아닐 때 사용되는 센티넬 타입
( 설명 전용 멤버 클래스* )

헬퍼 템플릿

template < std:: weakly_incrementable W, std:: semiregular Bound >
constexpr bool ranges:: enable_borrowed_range < ranges :: iota_view < W, Bound >> = true ;
(C++20 이후)

ranges:: enable_borrowed_range 의 이 특수화는 iota_view borrowed_range 를 만족하도록 합니다.

예제

#include <algorithm>
#include <iostream>
#include <ranges>
struct Bound
{
    int bound;
    bool operator==(int x) const { return x == bound; }
};
int main()
{
    for (int i : std::ranges::iota_view{1, 10})
        std::cout << i << ' ';
    std::cout << '\n';
    for (int i : std::views::iota(1, 10))
        std::cout << i << ' ';
    std::cout << '\n';
    for (int i : std::views::iota(1, Bound{10}))
        std::cout << i << ' ';
    std::cout << '\n';
    for (int i : std::views::iota(1) | std::views::take(9))
        std::cout << i << ' ';
    std::cout << '\n';
    std::ranges::for_each(std::views::iota(1, 10),
                          [](int i){ std::cout << i << ' '; });
    std::cout << '\n';
}

출력:

1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9

결함 보고서

다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 4096 C++20 views::iota iota_view 를 그대로 복사할 수 있었음 금지됨
P2325R3 C++20 iota_view W semiregular 임을 요구함
view default_initializable 을 요구하기 때문
W copyable 임만 요구

참고 항목

(C++11)
시작 값의 연속적인 증가로 범위를 채웁니다
(함수 템플릿)
시작 값의 연속적인 증가로 범위를 채웁니다
(알고리즘 함수 객체)
동일한 값을 반복적으로 생성하여 생성된 시퀀스로 구성된 view
(클래스 템플릿) (커스터마이제이션 포인트 객체)
적응된 시퀀스의 각 요소를 요소의 위치와 값 모두를 포함하는 튜플로 매핑하는 view
(클래스 템플릿) (레인지 어댑터 객체)