다음을 통해 공유


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

반복기와 sentinel 형식이 다를 수 있는 범위를 가져와서 반복기와 sentinel 형식이 동일한 뷰를 만듭니다. 반복기 쌍으로 지정된 범위를 허용하는 STL 알고리즘을 호출하는 데 유용합니다.

구문

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

템플릿 매개 변수

V
기본 뷰의 형식입니다.

특성 보기

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

특성 설명
범위 어댑터 views::common
기본 범위 만족 forward_range 하거나 그 이상이어야 합니다.
요소 형식 기본 범위와 동일
반복기 범주 보기 forward_range 또는 random_access_range 기본 범위가 충족되는 경우 random_access_rangesized_range
크기 기본 범위가 충족되는 경우에만 sized_range
반복 const가능 기본 범위를 const 반복할 수 있는 경우에만
공통 범위
빌린 범위 기본 범위가 충족되는 경우에만 borrowed_range

멤버

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

설명

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

이 보기는 반복기/sentinel 형식이 서로 다른 범위를 동일한 것으로 예상되는 레거시 알고리즘에 전달하는 데 유용합니다.

요구 사항

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

네임스페이스: std::ranges

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

생성자

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

1) common_view() = default;
2) constexpr explicit common_view(V v);

매개 변수

v
기본 보기입니다.

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

설명

1) 기본값은 .common_view
2) 를 사용하여 std::move(v)기본 뷰에서 생성합니다common_view. 오용을 방지하기 위해 성능에 부정적인 영향을 주는 공통 범위인 경우 V 오류가 발생합니다.

base

기본 뷰의 복사본을 가져옵니다.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

begin

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

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

반환 값

뷰의 첫 번째 요소를 가리키는 반복기:

요소가 10, 20 및 30인 벡터 그림입니다. 첫 번째 요소는 10을 포함하며 begin()이라는 레이블이 지정됩니다. 마지막 요소는 30을 포함하며 '마지막 요소'라는 레이블이 지정됩니다. 마지막 요소 뒤의 허수 상자는 sentinel을 나타내며 end()라는 레이블이 지정됩니다.

end

보기의 끝에 있는 sentinel을 가져옵니다.

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

반환 값

뷰의 마지막 요소를 따르는 sentinel입니다.

요소가 10, 20 및 30인 벡터 그림입니다. 첫 번째 요소는 10을 포함하며 begin()이라는 레이블이 지정됩니다. 마지막 요소는 30을 포함하며 '마지막 요소'라는 레이블이 지정됩니다. 마지막 요소 뒤의 허수 상자는 sentinel을 나타내며 end()라는 레이블이 지정됩니다.

size

보기의 요소 수를 가져옵니다.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

매개 변수

없음.

반환 값

보기의 요소 수입니다.

참고 항목

<ranges>
common 범위 어댑터
클래스 보기