std::ranges::views::take_while, std::ranges::take_while_view
Материал из cppreference.com
Шаблон:cpp/ranges/take while view/navbar
Определено в заголовочном файле <ranges>
|
||
template< ranges::view V, class Pred > requires ranges::input_range<V> && |
(1) | (начиная с C++20) |
namespace views { inline constexpr /*unspecified*/ take_while = /*unspecified*/; |
(2) | (начиная с C++20) |
Сигнатура вызова |
||
template< ranges::viewable_range R, class Pred > requires /* see below */ |
(начиная с 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 (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> )
|
(C++20) |
возвращает, не является ли производное представление пустым. Существует, если 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> )
|
(C++20) |
возвращает нный элемент в производном представлении. При условии, если оно удовлетворяет 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!
[править] Смотри также
(C++20) |
view , состоящий из первых N элементов другого view (шаблон класса) (объект адаптера диапазона) |
view , состоящий из элементов другого view , пропуская начальную подпоследовательность элементов до первого элемента, для которого предикат вернёт false (шаблон класса) (объект адаптера диапазона) |