다음을 통해 공유


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

조건자와 일치하는 선행 요소가 삭제되면 남아 있는 범위의 요소가 들어 있는 뷰입니다.

구문

template<ranges::view V, class P>
    requires ranges::input_range<V> &&
             std::is_object_v<P> &&
             std::indirect_unary_predicate<const P, ranges::iterator_t<V>>
class drop_while_view : public ranges::view_interface<drop_while_view<V, P>>;

템플릿 매개 변수

V
기본 뷰의 형식입니다.

P
삭제할 선행 요소를 결정하는 조건자의 형식입니다.

특성 보기

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

특성 설명
범위 어댑터 views::drop_while
기본 범위 만족 forward_range 해야 하고 기본 범위의 반복기를 모델링해야 합니다. sized_sentinel_for
요소 형식 기본 범위와 동일
반복기 범주 보기 기본 범위와 동일
크기 기본 범위가 충족되는 경우에만 random_access_range
반복 const가능 아니요
공통 범위 기본 범위가 충족되는 경우에만 common_range
빌린 범위 기본 범위가 충족되는 경우에만 borrowed_range

멤버

멤버 함수 설명
생성자 뷰를 생성합니다.
base 기본 보기를 가져옵니다.
begin 첫 번째 요소에 대한 반복기를 가져옵니다.
end 보기의 끝에 있는 sentinel을 가져옵니다.
pred 삭제할 요소를 결정하는 조건자 참조를 가져옵니다.
view_interface 상속 설명
backC++20 마지막 요소를 가져옵니다.
dataC++20 첫 번째 요소에 대한 포인터를 가져옵니다.
emptyC++20 보기가 비어 있는지 테스트합니다.
frontC++20 첫 번째 요소를 가져옵니다.
operator[]C++20 지정된 위치에 있는 요소를 가져옵니다.
operator boolC++20 보기가 비어 있지 않은지 테스트합니다.
size 보기의 요소 수를 가져옵니다.

요구 사항

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

네임스페이스: std::ranges

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

생성자

의 인스턴스를 생성합니다 drop_while_view.

1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;

매개 변수

base
기본 범위입니다.

pred
삭제할 선행 요소를 결정하는 조건자입니다.

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

반환 값

drop_while_view 인스턴스입니다.

설명

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

1) 이동은 뷰와 pred 조건자에서 base 구문을 생성합니다drop_while_view. 둘 다 basepred 통해 std::move()이동됩니다.
2) Default-constructs a .drop_while_view

예: drop_while_view

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

void print(auto v)
{
    for (auto& x : v)
    {
        std::cout << x << ' ';
    }
    std::cout << '\n';
}

int main()
{
    std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
    auto myView = std::views::drop_while(
        v,
        [](int i) {return i >= 0; });
    print(myView); // -4 5 6

    auto myView2 = v | std::views::drop_while(
        [](int i) {return i < 5; });
    print(myView2); // 5 6
}
-4 5 6
5 6

base

기본 보기를 가져옵니다.

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

// Uses std::move() to return the underlying view
constexpr V base() &&;

매개 변수

없음

반품

기본 보기입니다.

begin

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

constexpr auto begin();

반환 값

뷰의 첫 번째 요소를 가리키는 반복기입니다. 뷰에 조건자가 없는 경우 동작이 정의되지 않습니다.

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

end

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

constexpr auto end()

반환 값

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

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

pred

삭제할 선행 요소를 결정하는 조건자 참조를 가져옵니다.

constexpr const Pred& pred() const;

반환 값

조건자 참조입니다.

설명

보기에서 조건자를 저장하지 않으면 동작이 정의되지 않습니다.

본보기 pred

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

int main()
{
    std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
    auto mv = v | std::views::drop_while(
        [](int i) {return i < 5; }); // drop the leading elements < 5
    std::cout << std::boolalpha << mv.pred()(v[6]); // outputs "false" because v[6] = 6 and 6 is not less than 5 (the predicate)
}
false

참고 항목

<ranges>
drop_while 범위 어댑터
take_while 범위 어댑터
take_while_view
클래스 보기