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 (публичная функция-член) |
|
(C++20) | возвращает копию базового (адаптированного) вида (публичная функция-член) |
|
(C++20) | возвращает ссылку на сохранённый предикат (публичная функция-член) |
|
(C++20) | возвращает итератор начала (публичная функция-член) |
|
(C++20) | возвращает терминатор, представляющий конец (публичная функция-член) |
Унаследовано от |
|
|
(C++20) | возвращает, пуст ли производный вид. Предоставляется, если он удовлетворяет sized_range или forward_range. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++23) | возвращает постоянный итератор начала диапазона. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++23) | возвращает терминатор для постоянного итератора диапазона. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | возвращает, не пуст ли производный вид. Предоставляется, если ranges::empty применимо к нему. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | получает адрес данных производного вида. Предоставляется, если тип его итератора удовлетворяет contiguous_iterator. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | возвращает первый элемент в производном виде. Предоставляется, если он удовлетворяет forward_range. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | возвращает n-ый элемент в производном виде. Предоставляется, если он удовлетворяет random_access_range. (публичная функция-член std::ranges::view_interface<D>) |
Руководства по выводу
Вложенные классы
| тип терминатора (только для иллюстрации*) |
Пример
#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(шаблон класса) (объект-адаптер диапазона) |
|
(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