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 가능 |
예 |
공통 범위 | 와 같은 형식인 경우에만 Bound W |
빌린 범위 | 예 |
멤버
멤버 함수 | 설명 |
---|---|
생성자 C++20 | 뷰를 생성합니다. |
begin C++20 |
첫 번째 요소에 대한 반복기를 가져옵니다. |
end C++20 |
보기의 끝에 있는 sentinel을 가져옵니다. |
size C++20 |
요소 수를 가져옵니다. |
에서 상속됨 view_interface |
설명 |
back C++20 |
마지막 요소를 가져옵니다. |
empty C++20 |
보기가 비어 있는지 테스트합니다. |
front C++20 |
첫 번째 요소를 가져옵니다. |
operator[] C++20 |
지정된 위치에 있는 요소를 가져옵니다. |
operator bool C++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()
할 수 없습니다.