Namespaces
Variants

std::ranges:: views:: take_while, std::ranges:: take_while_view

From cppreference.net
Ranges library
Range adaptors
헤더 파일에 정의됨 <ranges>
template < ranges:: view V, class Pred >

requires ranges:: input_range < V > &&
std:: is_object_v < Pred > &&
std:: indirect_unary_predicate < const Pred, ranges:: iterator_t < V >>
class take_while_view

: public ranges:: view_interface < take_while_view < V, Pred >>
(1) (C++20 이후)
namespace views {

inline constexpr /*unspecified*/ take_while = /*unspecified*/ ;

}
(2) (C++20 이후)
호출 시그니처
template < ranges:: viewable_range R, class Pred >

requires /* see below */

constexpr ranges:: view auto take_while ( R && r, Pred && pred ) ;
(C++20 이후)
template < class Pred >
constexpr /*range adaptor closure*/ take_while ( Pred && pred ) ;
(C++20 이후)
1) 기본 시퀀스의 요소들로부터 시작하여, 조건자가 false 를 반환하는 첫 번째 요소에서 끝나는 view 를 나타내는 범위 어댑터.
2) RangeAdaptorObject . 표현식 views :: take_while ( e, f ) 표현식 동등 합니다 take_while_view ( e, f ) 에 대해, 적절한 하위 표현식 e f 가 주어졌을 때.

take_while_view 는 기본 뷰 V 가 해당 개념들을 모델링할 때 contiguous_range , random_access_range , bidirectional_range , forward_range , 그리고 input_range 개념들을 모델링합니다.

목차

데이터 멤버

멤버 설명
V base_ (private) 기본 뷰
( 설명 전용 멤버 객체* )
copyable-box <Pred> (until C++23) movable-box <Pred> (since C++23) pred_ (private) 기본 함수 객체
( 설명 전용 멤버 객체* )

멤버 함수

take_while_view 를 생성합니다
(public member function)
기본(적응된) 뷰의 복사본을 반환합니다
(public member function)
저장된 predicate에 대한 참조를 반환합니다
(public member function)
시작 부분을 가리키는 iterator를 반환합니다
(public member function)
끝을 나타내는 sentinel을 반환합니다
(public member function)
std::ranges::view_interface 로부터 상속됨
파생 뷰가 비어 있는지 여부를 반환합니다. sized_range 또는 forward_range 를 만족할 때만 제공됩니다
( std::ranges::view_interface<D> 의 public member function)
(C++23)
범위의 시작을 가리키는 상수 iterator를 반환합니다
( std::ranges::view_interface<D> 의 public member function)
(C++23)
범위의 상수 iterator에 대한 sentinel을 반환합니다
( std::ranges::view_interface<D> 의 public member function)
파생 뷰가 비어 있지 않은지 여부를 반환합니다. ranges::empty 가 적용 가능할 때만 제공됩니다
( std::ranges::view_interface<D> 의 public member function)
파생 뷰의 데이터 주소를 가져옵니다. iterator 타입이 contiguous_iterator 를 만족할 때만 제공됩니다
( std::ranges::view_interface<D> 의 public member function)
파생 뷰의 첫 번째 요소를 반환합니다. forward_range 를 만족할 때 제공됩니다
( std::ranges::view_interface<D> 의 public member function)
파생 뷰의 n 번째 요소를 반환합니다. random_access_range 를 만족할 때만 제공됩니다
( std::ranges::view_interface<D> 의 public member function)

추론 가이드

중첩 클래스

센티널 타입
( 설명 전용 멤버 클래스 템플릿* )

참고 사항

forward_iterator s 의 경우, views :: take_while ( v, pred ) ranges:: subrange { ranges:: begin ( v ) , ranges:: find_if_not ( v, pred ) } 와 유사하지만, 후자는 생성 시에만 pred 를 호출합니다(반면 전자는 유효한 take_while 반복자가 센티널과 비교될 때마다 pred 를 호출합니다).

예제

#include <iostream>
#include <ranges>
int main()
{
    for (int year : std::views::iota(2020)
                  | std::views::take_while([](int y){ return y < 2026; }))
        std::cout << year << ' ';
    std::cout << '\n';
    const char note[]{"Today is yesterday's tomorrow!..."};
    auto not_dot = [](char c){ return c != '.'; };
    for (char x : std::ranges::take_while_view(note, not_dot))
        std::cout << x;
    std::cout << '\n';
}

출력:

2020 2021 2022 2023 2024 2025
Today is yesterday's tomorrow!

참고 항목

다른 view 의 첫 N개 요소로 구성된 view
(클래스 템플릿) (범위 어댑터 객체)
술어가 false 를 반환하는 첫 번째 요소까지 초기 부분 시퀀스를 건너뛴 다른 view 의 요소로 구성된 view
(클래스 템플릿) (범위 어댑터 객체)