다음을 통해 공유


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

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

구문

template<view V, class Pred> requires
  input_range<V> && is_object_v<Pred> &&
  indirect_unary_predicate<const Pred, iterator_t<V>>
class take_while_view : public view_interface<take_while_view<V, Pred>>;

템플릿 매개 변수

Pred
뷰에 넣을 선행 요소를 결정하는 조건자의 형식입니다.

V
기본 뷰의 형식입니다.

특성 보기

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

특성 설명
범위 어댑터 views::take_while
기본 범위 만족 input_range 하거나 그 이상이어야 합니다.
요소 형식 기본 범위와 동일
반복기 범주 보기 기본 범위와 동일
크기 아니요
반복 const가능 기본 범위가 const 반복 가능하고 조건자가 참조와 함께 const 작동할 수 있는 경우에만 해당됩니다.
공통 범위 아니요
빌린 범위 아니요

멤버

멤버 함수 설명
생성자C++20 뷰를 생성합니다.
baseC++20 기본 범위를 가져옵니다.
beginC++20 첫 번째 요소에 대한 반복기를 가져옵니다.
endC++20 보기의 끝에 있는 sentinel을 가져옵니다.
predC++20 가져올 요소를 결정하는 조건자 참조를 가져옵니다.
에서 상속됨 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 이상이 필요합니다.

생성자

의 인스턴스 생성 take_while_view

1) take_while_view() requires 
    default_initializable<V> &&
    default_initializable<Pred> = default;

2) constexpr take_while_view(V base, Pred pred);

매개 변수

base
기본 보기입니다.

pred
뷰에 넣을 선행 요소를 결정하는 조건자입니다.

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

반환 값

take_while_view 개체입니다.

설명

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

1) 이동은 뷰와 pred 조건자에서 base 구문을 생성합니다take_while_view. 둘 다 basepred 통해 std::move()이동됩니다.
2) 빈 take_while_view. 기본 뷰 및 조건자는 기본 생성됩니다.

예: take_while_view

// 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 twv = std::views::take_while(v, [](int i) {return i >= 0; });
    
    for (auto& e : twv)
    {
        std::cout << e << ' '; // 0 1 2 3
    }
    std::cout << '\n';

    // Using the '|' operator to create a take_view
    for (auto i : v | std::views::take_while([](int i) {return i < 5; }))
    {
        std::cout << i << ' '; // 0 1 2 3 -4
    }
}
0 1 2 3
0 1 2 3 -4

base

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

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

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

매개 변수

없음

반품

기본 보기의 복사본입니다.

begin

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

1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires
        range<const V> && 
        indirect_unary_predicate<const Pred, iterator_t<const V>>

매개 변수

없음.

반환 값

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

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

설명

1의 Simple_view 경우 요구 사항은 뷰 Vconst V 동일한 반복기 및 sentinel 형식이 있음을 의미합니다.

end

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

1) constexpr auto end() requires (!Simple_view<V>);
2) constexpr auto end() const requires
        range<const V> &&
        indirect_unary_predicate<const Pred, iterator_t<const V>

매개 변수

없음.

반환 값

뷰의 마지막 요소 뒤에 있는 sentinel입니다.

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

설명

1의 Simple_view 경우 요구 사항은 뷰 Vconst V 동일한 반복기 및 sentinel 형식이 있음을 의미합니다.

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::take_while(
        [](int i) {return i < 5; });
    std::cout << std::boolalpha << mv.pred()(v[6]); // outputs false because v[6] = 6 and 6 is not less than 5 (the predicate)
}

참고 항목

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