std::ranges:: views::take_while, std::ranges::
Defined in header <ranges>
|
||
template
<
ranges::view V, class Pred >
requires ranges::input_range
<V>
&&
|
(1) | (since C++20) |
namespace views {
inline constexpr /*unspecified*/ take_while = /*unspecified*/; |
(2) | (since C++20) |
Call signature |
||
template
<
ranges::viewable_range R, class Pred >
requires /* see below */ |
(since C++20) | |
template
<
class Pred >
constexpr /*range adaptor closure*/ take_while( Pred&& pred ) ; |
(since C++20) | |
view
of the elements from an underlying sequence, starting at the beginning and ending at the first element for which the predicate returns false
take_while_view
models the concepts contiguous_range
, random_access_range
, bidirectional_range
, forward_range
, and input_range
when the underlying view V
Data members
Member name | Definition |
base_ (private)
|
the underlying view of type V
(exposition-only member object* |
pred_ (private)
|
the underlying function object of type
copyable-box <Pred>
(until C++23)
movable-box <Pred>
(since C++23)
(exposition-only member object* |
Member functions
constructs a take_while_view (public member function) |
|
returns a copy of the underlying (adapted) view (public member function) |
|
returns a reference to the stored predicate (public member function) |
|
returns an iterator to the beginning (public member function) |
|
returns a sentinel representing the end (public member function) |
|
Inherited from std::ranges::view_interface |
|
returns whether the derived view is empty. Provided if it satisfies sized_range or forward_range . (public member function of std::ranges::view_interface<D> )
|
|
(C++23)
|
returns a constant iterator to the beginning of the range. (public member function of std::ranges::view_interface<D> ) |
(C++23)
|
returns a sentinel for the constant iterator of the range. (public member function of std::ranges::view_interface<D> ) |
returns whether the derived view is not empty. Provided if ranges::empty is applicable to it. (public member function of std::ranges::view_interface<D> )
|
|
gets the address of derived view's data. Provided if its iterator type satisfies contiguous_iterator . (public member function of std::ranges::view_interface<D> )
|
|
returns the first element in the derived view. Provided if it satisfies forward_range . (public member function of std::ranges::view_interface<D> )
|
|
returns the n
th element in the derived view. Provided if it satisfies random_access_range . (public member function of std::ranges::view_interface<D> )
|
Deduction guides
Nested classes
the sentinel type (exposition-only member class template* |
Example
#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'; }
Output:
2020 2021 2022 2023 2024 2025 Today is yesterday's tomorrow!
See also
(C++20)
|
a view consisting of the first N elements of another view
(class template) (range adaptor object) |
a view consisting of the elements of another view , skipping the initial subsequence of elements until the first element where the predicate returns false
(class template) (range adaptor object) |