◐ Shell
clean mode source ↗

std::ranges::views::take_while, std::ranges::take_while_view — cppreference.com

Материал из 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.

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!

Смотри также