다음을 통해 공유


iota_view 클래스(C++ 표준 라이브러리)

초기 값을 반복적으로 증가시켜 요소 시퀀스의 뷰를 생성합니다. 시퀀스는 바인딩되거나 바인딩되지 않을 수 있습니다.

구문

template<std::weakly_incrementable W, std::semiregular Bound = std::unreachable_sentinel_t>
    requires __WeaklyEqualityComparableWith<W, Bound> && std::copyable<W>
class iota_view : public ranges::view_interface<iota_view<W, Bound>>;

템플릿 매개 변수

W
시퀀스의 값 형식입니다. 지정된 형식이 지원 operator++되어야 합니다.

Bound
끝 값의 형식입니다. std::unreachable_sentinel_t 이 경우Bound(기본값) 뷰는 바인딩되지 않습니다.

특성 보기

다음 항목에 대한 설명은 클래스 특성 보기를 참조 하세요.

특성 설명
범위 어댑터 views::iota
기본 범위 이 보기에서 해당 멤버를 생성하므로 해당 없음
요소 형식 템플릿 매개 변수와 동일 W
반복기 범주 보기 input_range 의 유형에 따라 최대 random_access_range지원W
크기 범위에 끝 값이 있는 경우에만, 즉 무한 계열이 아닙니다.
반복 const가능
공통 범위 와 같은 형식인 경우에만 BoundW
빌린 범위

멤버

멤버 함수 설명
생성자 C++20 뷰를 생성합니다.
beginC++20 첫 번째 요소에 대한 반복기를 가져옵니다.
endC++20 보기의 끝에 있는 sentinel을 가져옵니다.
sizeC++20 요소 수를 가져옵니다.
에서 상속됨 view_interface 설명
backC++20 마지막 요소를 가져옵니다.
emptyC++20 보기가 비어 있는지 테스트합니다.
frontC++20 첫 번째 요소를 가져옵니다.
operator[]C++20 지정된 위치에 있는 요소를 가져옵니다.
operator boolC++20 보기가 비어 있지 않은지 테스트합니다.

설명

범위를 만드는 iota_view 좋은 방법은 범위 어댑터를 사용하는 iota 것입니다. 범위 어댑터는 뷰 클래스를 만드는 데 사용되는 방법입니다. 사용자 고유의 사용자 지정 보기 형식을 만들려는 경우 보기 형식이 노출됩니다.

값 시퀀스는 1,2,3 또는 'a', 'b', 'c' 또는 범위의 연속 요소와 같은 정수 값일 수 있습니다.

이 뷰는 일반적으로 일련의 값을 반복하는 데 사용됩니다. 예시:

for (int i : iota_view{1, 10}) // iterate over a view of the integers 1 through 9
{
    std::cout << i << ’ ’; // 1 2 3 4 5 6 7 8 9
}

요구 사항

헤더: <ranges> (C++20 이후)

네임스페이스: std::ranges

컴파일러 옵션: /std:c++20 이상이 필요합니다.

생성자

의 인스턴스를 만듭니다 iota_view.

1) iota_view() requires std::default_initializable<W> = default;
2) constexpr explicit iota_view(W value);
3) constexpr iota_view(std::type_identity_t<W> value, std::type_identity_t<Bound> bound);
4) constexpr iota_view( /*iterator*/ first, /*sentinel*/ last );

매개 변수

value
계열의 시작 값입니다.

bound
계열의 경계입니다. 계열의 마지막 값보다 큰 값입니다.

템플릿 매개 변수 형식에 대한 자세한 내용은 템플릿 매개 변수를 참조 하세요.

설명

1) 기본 초기화된 템플릿 형식W에 따라 결정되는 시작 및 종료 값을 사용하여 만듭니 iota_view 다.
2) 값 초기화 형식W에 의해 결정된 지정된 시작 값과 끝 값을 사용하여 만듭니 iota_view 다.
3) 지정된 시작 값과 끝 값으로 경계 iota_view 를 만듭니다. 끝 값은 지정된 마지막 값보다 작은 값입니다.
4) 하위 보기를 만드는 데 사용됩니다. 예를 들어 std::ranges::iota_view(start, end); 하위 보기의 시작과 end 끝에 대한 반복기는 어디에 start 있고 끝입니다.

이 클래스를 직접 만드는 대신 범위 어댑터를 사용하여 iota 쉽게 만들 iota_view 수 있습니다. 범위 어댑터는 뷰 클래스를 만드는 데 사용되는 방법입니다. 사용자 고유의 사용자 지정 보기 형식을 만들려는 경우 보기 형식이 노출됩니다.

바인딩된 형식이 unreachable_sentinel_t면 결과 뷰가 바인딩됩니다.

바인딩된 값을 초기화하는 생성자 중 하나를 사용하는 경우 바인딩은 해당 형식의 기본 초기화 값이 됩니다. 예를 들어 기본 iota_view<int, int>{} 생성 int 값과 바인딩된 값이 둘 다0이므로 빈 범위 int 입니다. iota_view<int, int>{-4} 또한 기본 생성 int 바인딩이 -4, -3, -2, -1 .이므로 0.

iota_view 생성자 예제

// requires /std:c++20, or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::ranges::iota_view<int> iv; // create an iota_view with an unbounded range, starting at 0 
    std::ranges::iota_view<int> iv2(5); // create an iota_view with an unbounded range, starting at 5.
    std::ranges::iota_view<int, int> iv3{5, 10}; // create an iota_view with a bounded range, starting at 5 and ending at 9
    
    std::vector<int> v{10, 20, 35, 45, 50, 66, 77, 82, 90, 100};
    auto start = std::ranges::find(v, 35);
    auto end = std::ranges::find(v, 82);
    for (auto &&val : std::ranges::iota_view(start, end))
    {
        std::cout << *val << ' '; // outputs 35 45 50 66 77
    }
}

begin

뷰의 첫 번째 요소에 대한 반복기를 가져옵니다.

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

매개 변수

없음.

반환 값

뷰의 첫 번째 요소를 가리키는 반복기입니다.

end

보기의 끝에 있는 끝 센티넬을 가져옵니다.

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

매개 변수

없음.

반환 값

바인딩 iota_view 되지 않은 경우 .std::unreachable_sentinel

iota_view 바인딩된 경우 시퀀스의 마지막 값을 지나서 sentinel을 가리키는 반복기를 반환합니다.

size

보기의 요소 수를 가져옵니다. 경계 iota_view 해야 합니다.

constexpr auto size() requires
    (same_as<W, Bound> && advanceable <W>) ||
    (integral<W> && integral<Bound>) ||
    sized_sentinel_for<Bound, W>;

매개 변수

없음.

반환 값

iota_view의 요소 수입니다.

설명

바인딩iota_view되지 않은 에 대해 호출 size() 할 수 없습니다.

참고 항목

<ranges>
iota() 범위 어댑터
std::numerics::iota
클래스 보기