Пространства имён
Варианты
Действия

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

Материал из cppreference.com

Шаблон:cpp/ranges/take while view/navbar

<tbody> </tbody>
Определено в заголовочном файле <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 моделирует соответствующие концепты.

Методы

Шаблон:cpp/ranges/adaptor/dsc pred
создает take_while_view
(public функция-элемент) [править]
(C++20)
возвращает копию основного (адаптированного) представления
(public функция-элемент) [править]
(C++20)
возвращает итератор на начало
(public функция-элемент) [править]
(C++20)
возвращает охранное выражение указывающее на конец
(public функция-элемент) [править]
Унаследовано от ranges::view_interface
(C++20)
возвращает является ли производное представление пустым. При условии, если это удовлетворяет sized_range или forward_range.
(public функция-элемент std::ranges::view_interface<D>) [править]
(C++23)
возвращает константный итератор в начале диапазона.
(public функция-элемент std::ranges::view_interface<D>) [править]
(C++23)
возвращает охранное выражение для константного итератора диапазона.
(public функция-элемент std::ranges::view_interface<D>) [править]
возвращает, не является ли производное представление пустым. Существует, если ranges::empty применимо к нему.
(public функция-элемент std::ranges::view_interface<D>) [править]
(C++20)
получает адрес данных производного представления. При условии, если тип его итератора удовлетворяет contiguous_iterator.
(public функция-элемент std::ranges::view_interface<D>) [править]
(C++20)
возвращает первый элемент в производном представлении. При условии, если оно удовлетворяет forward_range.
(public функция-элемент std::ranges::view_interface<D>) [править]
возвращает нный элемент в производном представлении. При условии, если оно удовлетворяет random_access_range.
(public функция-элемент std::ranges::view_interface<D>) [править]

Deduction guides

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

охранное выражение
(шаблон класса-элемента только для пояснения)

Пример

#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!

Смотри также

view, состоящий из первых N элементов другого view
(шаблон класса) (объект адаптера диапазона) [править]
view, состоящий из элементов другого view, пропуская начальную подпоследовательность элементов до первого элемента, для которого предикат вернёт false
(шаблон класса) (объект адаптера диапазона) [править]