ranges_view_interface
ranges_view_interface (뷰 인터페이스)
std::ranges::view_interface은 뷰 인터페이스를 정의하기 위한 헬퍼 클래스 템플릿이에요. C++20부터 사용할 수 있어요.
출처: cppreference
본문
<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< class D >
requires std::is_class_v<D> && std::same_as<D, std::remove_cv_t<D>>
class view_interface;
(since C++20)
std::ranges::view_interface은 뷰 인터페이스를 정의하기 위한 헬퍼 클래스 템플릿이에요.
view_interface는 보통 CRTP로 사용돼요:
class my_view : public std::ranges::view_interface<my_view>
{
public:
auto begin() const { /*...*/ }
auto end() const { /*...*/ }
};
멤버 함수 (Member functions)
- empty — 뷰가 비었는지 확인 (derived::begin == derived::end)
- operator bool — 뷰가 비어 있지 않은지 확인
- data — 뷰의 데이터 포인터 반환 (contiguous_range일 때)
- size — 뷰의 크기 반환 (sized_range일 때)
- front — 첫 번째 요소 반환
- back — 마지막 요소 반환 (bidirectional_range일 때)
- operator[] — 인덱스 요소 반환 (random_access_range일 때)
- cbegin / cend / crbegin / crend — 상수·역방향 반복자 반환
참고 (Notes)
이 인터페이스에서 파생된 뷰는 이들 멤버를 자동으로 얻어요. D는 파생 클래스 타입이에요.