다음을 통해 공유


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

다른 범위에 속하는 요소를 참조하는 뷰입니다.

구문

template<std::ranges::range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;

템플릿 매개 변수

R
참조할 범위입니다.

멤버

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

특성 보기

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

특성 설명
범위 어댑터 views::all 또는 views::common
기본 범위 충족해야 합니다. input_range
요소 형식 기본 범위와 동일
반복기 범주 보기 기본 범위와 동일
크기 기본 범위가 충족되는 경우에만 sized_range
반복 const가능
공통 범위 기본 범위가 충족되는 경우에만 common_range
빌린 범위

요구 사항

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

네임스페이스: std::ranges

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

생성자

의 인스턴스 생성 ref_view

// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);

매개 변수

rg
참조할 범위입니다.

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

반환 값

ref_view 인스턴스입니다.

설명

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

A ref_view 는 컨테이너를 뷰로 변환하는 데 유용합니다. 예를 들어 뷰로 변환 vector 하는 데 사용할 ref_view 수 있으므로 벡터의 요소를 전달하는 것이 저렴합니다.

예: ref_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v = {1,2,3};
    auto refView = std::views::all(v);
    std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
    refView[0] = 10; // modifies v[0]
    std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10

base

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

constexpr R& base() const;

매개 변수

없음.

반환 값

기본 범위입니다.

begin

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

constexpr iterator_t<R> begin() const;

매개 변수

없음.

반환 값

ref_view요소의 첫 번째 요소를 가리키는 반복기입니다.

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

data

ref_view항목의 첫 번째 요소에 대한 포인터를 가져옵니다. 범위의 요소는 연속적이어야 합니다.

constexpr auto data() const requires contiguous_range<R>;

매개 변수

없음.

반환 값

첫 번째 요소에 대한 포인터입니다.

empty

비어 ref_view 있는지 테스트합니다.

constexpr bool empty() const

매개 변수

없음.

반환 값

요소가 없는 경우 ref_view 반환 true 합니다. 그렇지 않으면 false입니다.

end

ref_view끝부분에 있는 sentinel을 가져옵니다.

constexpr sentinel_t<R> end() const

반환 값

다음의 마지막 요소 다음에 오는 sentinel입니다.ref_view

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

size

요소 수를 가져옵니다.

constexpr auto size() const requires sized_range<R>

매개 변수

없음.

반환 값

ref_view의 요소 수입니다.

참고 항목

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