ranges_subrange

ranges_subrange (하위 범위)

std::ranges::subrange은 반복자와 센티널 쌍으로 표현되는 범위의 하위 범위를 나타내는 클래스 템플릿이에요. C++20부터 사용할 수 있어요.

출처: cppreference

본문

<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

template<
    std::input_or_output_iterator I,
    std::sentinel_for<I> S = I,
    ranges::subrange_kind K = std::sized_sentinel_for<S, I> ?
                                  ranges::subrange_kind::sized :
                                  ranges::subrange_kind::unsized >
    requires (K == ranges::subrange_kind::sized || !std::sized_sentinel_for<S, I>)
class subrange
    : public ranges::view_interface<subrange<I, S, K>>

(since C++20)

std::ranges::subrange은 반복자 I와 센티널 S로 경계 지어진 하위 범위를 나타내는 뷰예요.

멤버 타입 (Member types)

멤버 타입 정의
iterator I
sentinel S
iterator_concept K == sized면 std::input_iterator, 아니면 std::input_or_output_iterator
iterator_category 존재한다면 std::input_iterator_tag

멤버 함수 (Member functions)

  • (constructor) — subrange 생성 (begin/end 반복자 쌍, 범위, 또는 정수 크기와 함께)
  • operator= — 내용 할당
  • begin — 시작 반복자 반환
  • end — 센티널 반환
  • size — 요소 수 반환 (sized일 때)
  • advance / next / prev — 반복자 오프셋 (사용 중단)
  • first / second — 구조적 바인딩용 begin/end 반환
  • operator bool — 범위가 비어 있지 않은지 확인

비멤버 함수 (Non-member functions)

  • get(I) / get(S) — 구조적 바인딩 지원
  • std::tuple_size, std::tuple_element — 구조적 바인딩 지원

참고 (Notes)

subrange는 borrowed_range이고 view예요. 반복자-센티널 쌍을 좁게 표준화된 형태로 담아, 구조적 바인딩과 알고리즘 매개변수로 쓰기 좋아요.

더 알아보기 (Learn more)

cppreference