Spec-Zone.ru › C++

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

Определено в заголовке <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) Адаптер диапазона, представляющий view элементов из базовой последовательности, начиная с начала и заканчивая первым элементом, для которого предикат возвращает false.
2) RangeAdaptorObject. Выражение views::take_while(e, f) эквивалентно выражению take_while_view(e, f) для любых подходящих подвыражений e и f.

take_while_view соответствует концепциям contiguous_range, random_access_range, bidirectional_range, forward_range и input_range, когда базовый вид V соответствует соответствующим концепциям.

Функции-члены

(конструктор)
(C++20)
создаёт take_while_view
(публичная функция-член)
base
(C++20)
возвращает копию базового (адаптированного) вида
(публичная функция-член)
pred
(C++20)
возвращает ссылку на сохранённый предикат
(публичная функция-член)
begin
(C++20)
возвращает итератор начала
(публичная функция-член)
end
(C++20)
возвращает терминатор, представляющий конец
(публичная функция-член)
Унаследовано от std::ranges::view_interface
empty
(C++20)
возвращает, пуст ли производный вид. Предоставляется, если он удовлетворяет sized_range или forward_range.
(публичная функция-член std::ranges::view_interface<D>)
cbegin
(C++23)
возвращает постоянный итератор начала диапазона.
(публичная функция-член std::ranges::view_interface<D>)
cend
(C++23)
возвращает терминатор для постоянного итератора диапазона.
(публичная функция-член std::ranges::view_interface<D>)
operator bool
(C++20)
возвращает, не пуст ли производный вид. Предоставляется, если ranges::empty применимо к нему.
(публичная функция-член std::ranges::view_interface<D>)
data
(C++20)
получает адрес данных производного вида. Предоставляется, если тип его итератора удовлетворяет contiguous_iterator.
(публичная функция-член std::ranges::view_interface<D>)
front
(C++20)
возвращает первый элемент в производном виде. Предоставляется, если он удовлетворяет forward_range.
(публичная функция-член std::ranges::view_interface<D>)
operator[]
(C++20)
возвращает n-ый элемент в производном виде. Предоставляется, если он удовлетворяет random_access_range.
(публичная функция-член std::ranges::view_interface<D>)

Руководства по выводу

Вложенные классы

sentinel
тип терминатора
(только для иллюстрации*)

Пример

#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';
}

Вывод:

2020 2021 2022 2023
Today is yesterday's tomorrow!

См. также

ranges::take_viewviews::take
(C++20)
view, состоящая из первых N элементов другого view
(шаблон класса) (объект-адаптер диапазона)
ranges::drop_while_viewviews::drop_while
(C++20)
view, состоящая из элементов другого view, пропускающая начальную последовательность элементов до первого элемента, для которого предикат возвращает false
(шаблон класса) (объект-адаптер диапазона)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/take_while_view

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API