std::ranges...e_while_view(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

🌸 NAME 🌸

okay bestie, welcome to the std::ranges...e_while_view(3) page from the C++ Standard Libary manual πŸ’… this one is all about std::ranges::views::take_while and std::ranges::take_while_view, and yes, we're covering every last cute little detail.

std::ranges::views::take_while,std::ranges::take_while_view β€” that's the pair, no cap. 🫢


✨ Synopsis ✨

Defined in header <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) (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 */
constexpr ranges::view auto take_while( R&& r, Pred&& pred );
(since C++20)

template< class Pred >
constexpr /*range adaptor closure*/ take_while( Pred&& pred );
(since C++20)
  1. A range adaptor that represents view of the elements from an underlying sequence, starting at the beginning and ending at the first element for which the predicate returns false. πŸŽ€
  2. RangeAdaptorObject. The expression views::take_while(e, f) is expression-equivalent to take_while_view(e, f) for any suitable subexpressions e and f. πŸ’–

take_while_view models the concepts contiguous_range, random_access_range, bidirectional_range, forward_range, and input_range when the underlying view V models respective concepts. periodt. πŸ‘‘


πŸ’… Member functions πŸ’…

  • constructor β€” constructs a take_while_view; (C++20) (public member function)
  • base β€” returns a copy of the underlying (adapted) view; (C++20) (public member function)
  • pred β€” returns a reference to the stored predicate; (C++20) (public member function)
  • begin β€” returns an iterator to the beginning; (C++20) (public member function)
  • end β€” returns a sentinel representing the end; (C++20) (public member function)

🧬 Inherited from std::ranges::view_interface 🧬

  • empty β€” returns whether the derived view is empty. Provided if it satisfies sized_range or forward_range. (C++20) (public member function of std::ranges::view_interface<D>)
  • cbegin β€” returns a constant iterator to the beginning of the range. (C++23) (public member function of std::ranges::view_interface<D>)
  • cend β€” returns a sentinel for the constant iterator of the range. (C++23) (public member function of std::ranges::view_interface<D>)
  • operator bool β€” returns whether the derived view is not empty. Provided if ranges::empty is applicable to it. (C++20) (public member function of std::ranges::view_interface<D>)
  • data β€” gets the address of derived view's data. Provided if its iterator type satisfies contiguous_iterator. (C++20) (public member function of std::ranges::view_interface<D>)
  • front β€” returns the first element in the derived view. Provided if it satisfies forward_range. (C++20) (public member function of std::ranges::view_interface<D>)
  • operator[] β€” returns the n^th element in the derived view. Provided if it satisfies random_access_range. (C++20) (public member function of std::ranges::view_interface<D>)

🧚 Deduction guides 🧚

the page gives this its own little heading; no extra details are listed under it, bestie. ✨


πŸͺ† Nested classes πŸͺ†

  • sentinel β€” the sentinel type (exposition-only member class template*)

🌈 Example 🌈

// Run this code

#include <iostream>
#include <ranges>

int main()
{
    for (int year : std::views::iota(2020)
                  | std::views::take_while([](int y) { return y <=
2023; }))
        std::cout << year << ' ';
    std::cout << '\n';

    const char idea[] {"Today is yesterday's tomorrow!..."};
    for (char x : std::ranges::take_while_view(idea, [](char c) {
return c != '.'; }))
        std::cout << x;
    std::cout << '\n';
}

⭐ Output ⭐

2020 2021 2022 2023
Today is yesterday's tomorrow!

πŸ‘€ See also πŸ‘€

  • ranges::take_view β€” a view consisting of the first N elements of another view (class template)
  • views::take β€” (range adaptor object) (C++20)
  • ranges::drop_while_view β€” 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)
  • views::drop_while β€” (range adaptor object) (C++20)

πŸ’– that's the whole manual page, bestie! source: http://cppreference.com Β· version/date: 2024.06.10 Β· title: std::ranges...e_while_view(3) β€” now go take while the predicate is true and slay the ranges game πŸ¦‹πŸ‘‘

πŸ“¦ where this page comes from