std::ranges:: views:: take_while, std::ranges:: take_while_view
|
헤더 파일에 정의됨
<ranges>
|
||
|
template
<
ranges::
view
V,
class
Pred
>
requires
ranges::
input_range
<
V
>
&&
|
(1) | (C++20 이후) |
|
namespace
views
{
inline
constexpr
/*unspecified*/
take_while
=
/*unspecified*/
;
|
(2) | (C++20 이후) |
|
호출 시그니처
|
||
|
template
<
ranges::
viewable_range
R,
class
Pred
>
requires
/* see below */
|
(C++20 이후) | |
|
template
<
class
Pred
>
constexpr /*range adaptor closure*/ take_while ( Pred && pred ) ; |
(C++20 이후) | |
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!
참고 항목
|
(C++20)
|
다른
view
의 첫 N개 요소로 구성된
view
(클래스 템플릿) (범위 어댑터 객체) |
술어가
false
를 반환하는 첫 번째 요소까지 초기 부분 시퀀스를 건너뛴 다른
view
의 요소로 구성된
view
(클래스 템플릿) (범위 어댑터 객체) |