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) | |
false.views::take_while(e, f) является expression-equivalent к take_while_view(e, f) для любых подходящих подвыражений e и f.take_while_view моделирует концепты contiguous_range, random_access_range, bidirectional_range, forward_range и input_range, когда базовое представление V моделирует соответствующие концепты.
Элементы данных
| Элемент | Описание | ||||
V base_ (закрытый)
|
базовое представление (объект-элемент, показанный для пояснения*) | ||||
pred_ (закрытый)
|
базовый функциональный объект (объект-элемент, показанный для пояснения*) |
Функции-члены
создает
take_while_view
(публичная функция-член) |
|
|
возвращает копию базового (адаптированного) представления
(публичная функция-член) |
|
|
возвращает ссылку на сохраненный предикат
(публичная функция-член) |
|
|
возвращает итератор на начало
(публичная функция-член) |
|
|
возвращает страж, представляющий конец
(публичная функция-член) |
|
Унаследовано от ranges::view_interface | |
| возвращает, пусто ли производное представление, предоставляется только если оно удовлетворяет sized_range или forward_range (открытая функция-элемент класса std::ranges::view_interface<D>)
| |
(C++23) |
возвращает константный итератор на начало диапазона (открытая функция-элемент класса std::ranges::view_interface<D>)
|
(C++23) |
возвращает ограничитель для константного итератора диапазона (открытая функция-элемент класса std::ranges::view_interface<D>)
|
| возвращает, не пусто ли производное представление, предоставляется только если ranges::empty применима к нему (открытая функция-элемент класса std::ranges::view_interface<D>)
| |
| получает адрес данных производного представления, предоставляется только если тип его итератора удовлетворяет contiguous_iterator (открытая функция-элемент класса std::ranges::view_interface<D>)
| |
| возвращает первый элемент в производном представлении, предоставляется если оно удовлетворяет forward_range (открытая функция-элемент класса std::ranges::view_interface<D>)
| |
возвращает n-й элемент в производном представлении, предоставляется только если оно удовлетворяет random_access_range (открытая функция-элемент класса std::ranges::view_interface<D>)
| |
Руководства по выводу
Вложенные классы
|
тип sentinel
( только для демонстрации (exposition-only member class template*) ) |
Примечания
Для
forward_iterator
s
,
views
::
take_while
(
v, pred
)
аналогично
ranges::
subrange
{
ranges::
begin
(
v
)
,
ranges::
find_if_not
(
v, pred
)
}
, но последний вызывает
pred
только во время конструирования (в то время как первый вызывает
pred
каждый раз, когда корректный итератор
take_while
сравнивается с sentinel).
Пример
#include <iostream> #include <ranges> int main() { for (int year : std::views::iota(2020) | std::views::take_while([](int y){ return y < 2026; })) std::cout << year << ' '; std::cout << '\n'; const char note[]{"Today is yesterday's tomorrow!..."}; auto not_dot = [](char c){ return c != '.'; }; for (char x : std::ranges::take_while_view(note, not_dot)) std::cout << x; std::cout << '\n'; }
Вывод:
2020 2021 2022 2023 2024 2025 Today is yesterday's tomorrow!
Смотрите также
|
(C++20)
|
представление,
view
состоящее из первых N элементов другого
view
(шаблон класса) (объект адаптера диапазона) |
представление,
view
состоящее из элементов другого
view
, пропускающее начальную подпоследовательность элементов до первого элемента, где предикат возвращает
false
(шаблон класса) (объект адаптера диапазона) |