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

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

Материал из cppreference.com
< cpp‎ | ranges

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

Определено в заголовочном файле <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 функция-элемент) [править]
Унаследовано от std::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
(шаблон класса) (объект адаптера диапазона) [править]