split_view
클래스(C++ 표준 라이브러리)
구분 기호에 따라 보기를 하위 범위로 분할합니다. 구분 기호는 단일 요소 또는 요소 뷰일 수 있습니다. 구분 기호가 결과 split_view
요소의 일부가 아닙니다.
관련 뷰는 클래스입니다 lazy_split_view
. 주요 차이점은 다음과 같습니다.split_view
lazy_split_view
보기 | 범위를 분할할 수 있습니다.const |
범위 유형 |
---|---|---|
split_view |
아니요 | 이상 지원합니다 forward_range . |
lazy_split_view |
예 | 이상 지원합니다 input_range . |
범위를 분할해야 하는 경우가 아니면 더 효율적이므로 선호 split_view
합니다 const
.
구문
template<forward_range V, forward_range Pattern>
requires view<V> && view<Pattern> &&
indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to>
class split_view : public view_interface<split_view<V, Pattern>>;
템플릿 매개 변수
Pattern
구분 기호 시퀀스를 지정하는 뷰의 형식입니다.
V
기본 뷰의 형식입니다.
특성 보기
다음 항목에 대한 설명은 클래스 특성 보기를 참조 하세요.
특성 | 설명 |
---|---|
범위 어댑터 | views::split |
기본 범위 | 기본 범위와 동일 |
요소 형식 | range_reference_t<V> |
반복기 범주 보기 | 만족 forward_range |
크기 | 아니요 |
반복 const 가능 |
아니요 |
공통 범위 | 기본 범위가 충족되는 경우에만 common_range |
빌린 범위 | 아니요 |
멤버
멤버 함수 | 설명 |
---|---|
생성자 | 뷰를 생성합니다. |
base C++20 |
기본 범위를 가져옵니다. |
begin C++20 |
첫 번째 요소에 대한 반복기를 가져옵니다. |
end C++20 |
보기의 끝에 있는 sentinel을 가져옵니다. |
에서 상속됨 view_interface |
설명 |
empty C++20 |
보기가 비어 있는지 테스트합니다. |
front C++20 |
첫 번째 요소를 가져옵니다. |
operator bool C++20 |
보기가 비어 있지 않은지 테스트합니다. |
요구 사항
헤더: <ranges>
(C++20 이후)
네임스페이스: std::ranges
컴파일러 옵션: /std:c++20
이상이 필요합니다.
생성자
의 인스턴스 생성 split_view
1) split_view() requires default_initializable<V> && default_initializable<Pattern> = default;
2) constexpr split_view(V base, Pattern pattern);
3) template<input_range R> requires constructible_from<V, views::all_t<R>> &&
constructible_from<Pattern, single_view<range_value_t<R>>>
constexpr split_view(R&& rg, range_value_t<R> e);
매개 변수
e
보기를 분할할 위치를 식별하는 단일 요소입니다. 요소는 결과 보기의 일부가 아닙니다.
base
기본 보기입니다.
pattern
뷰를 분할할 위치를 식별하는 요소의 뷰입니다. 요소 보기는 결과 보기의 일부가 아닙니다.
rg
분할할 범위입니다.
템플릿 매개 변수 형식에 대한 자세한 내용은 템플릿 매개 변수를 참조 하세요.
반환 값
split_view
하나 이상의 하위 범위가 포함된 인스턴스입니다.
설명
범위를 만드는 split_view
가장 좋은 방법은 범위 어댑터를 사용하는 views::split
것입니다. 범위 어댑터는 뷰 클래스를 만드는 데 사용되는 방법입니다. 보기 형식은 사용자 고유의 사용자 지정 보기 형식을 만들려는 경우에만 노출됩니다.
1) 기본 생성되는 값을 만듭니 split_view
다. 기본 뷰이며 pattern
기본 생성됩니다. base()
는 .의 복사본을 반환합니다 V()
.
2) 구분 기호 시퀀스를 사용하여 뷰를 분할하여 만듭니 split_view
다.
3) 단일 구분 기호를 사용하여 뷰를 분할하여 만듭니 split_view
다.
본보기 split_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> rg{ 1, 2, 3, 1, 2, 3, 4, 5, 6 };
// pipe syntax using range adaptor
for (const auto& subrange : rg | std::views::split(3))
{
// outputs
// 1 2
// 1 2
// 4 5 6
for (const auto& elem : subrange)
{
std::cout << elem << ' ';
}
std::cout << '\n';
}
int delimiters[] = {2, 3};
for (auto splitRange : std::views::split(rg, delimiters)) // ctor syntax
{
for (auto& i : splitRange)
{
std::cout << i << " "; // 1 1 4 5 6
}
}
}
1 2
1 2
4 5 6
1 1 4 5 6
base
기본 뷰의 복사본을 가져옵니다.
// Uses a copy constructor to return the underlying view
1) constexpr V base() const & requires std::copy_constructible<V>;
// Uses a move constructor to return the underlying view
2) constexpr V base() &&;
매개 변수
없음
반품
기본 보기입니다.
begin
뷰의 첫 번째 요소에 대한 반복기를 가져옵니다.
constexpr auto begin();
매개 변수
없음.
반환 값
뷰의 첫 번째 요소를 가리키는 반복기입니다.
end
보기의 끝에 있는 sentinel을 가져옵니다.
constexpr auto end();
매개 변수
없음.
반환 값
뷰의 마지막 요소를 따르는 sentinel입니다.