Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | ranges
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
Definiert in der Header-Datei <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) (seit C++20)
namespace views {

    inline constexpr /*unspecified*/ take_while = /*unspecified*/;

}
(2) (seit C++20)
Aufruf-Signatur
template< ranges::viewable_range R, class Pred >

    requires /* siehe unten */

constexpr ranges::view auto take_while( R&& r, Pred&& pred );
(seit C++20)
template< class Pred >
constexpr /*range adaptor closure*/ take_while( Pred&& pred );
(seit C++20)
1) Ein Bereichs-Adapter, der eine view der Elemente aus einer zugrunde liegenden Sequenz darstellt, beginnend am Anfang und endend am ersten Element, für das der Prädikat false zurückgibt.
2) RangeAdaptorObject. Der Ausdruck views::take_while(e, f) ist ausdrucksäquivalent zu take_while_view(e, f) für beliebige geeignete Unterausdrücke e und f.

take_while_view modelliert die Konzepte contiguous_range, random_access_range, bidirectional_range, forward_range und input_range, wenn die zugrunde liegende View V die entsprechenden Konzepte modelliert.

Inhalt

[bearbeiten] Datenmember

Mitglied Beschreibung
V base_ (private) die zugrunde liegende Ansicht
((exposition-only member object*)
copyable-box<Pred>(bis C++23)movable-box<Pred>(seit C++23) pred_ (privat) das zugrunde liegende Funktions-Objekt
((exposition-only member object*)

[bearbeiten] Memberfunktionen

konstruiert eine take_while_view
(öffentliche Member-Funktion) [edit]
gibt eine Kopie der zugrunde liegenden (angepassten) View zurück
(public member function) [edit]
gibt eine Referenz auf die gespeicherte Prädikatfunktion zurück
(public member function) [edit]
gibt einen Iterator zum Anfang zurück
(öffentliche Member-Funktion) [edit]
gibt einen Sentinel zurück, der das Ende repräsentiert
(öffentliche Member-Funktion) [edit]
Geerbt von std::ranges::view_interface
gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur, wenn sie sized_range oder forward_range erfüllt
(public member function of std::ranges::view_interface<D>) [edit]
(C++23)
gibt einen konstanten Iterator zum Anfang des Bereichs zurück
(public member function of std::ranges::view_interface<D>) [edit]
(C++23)
gibt ein Sentinel für den konstanten Iterator des Bereichs zurück
(public member function of std::ranges::view_interface<D>) [edit]
gibt zurück, ob die abgeleitete Ansicht nicht leer ist, bereitgestellt nur, wenn ranges::empty darauf anwendbar ist
(public member function of std::ranges::view_interface<D>) [edit]
gibt die Adresse der Daten der abgeleiteten Ansicht zurück, nur bereitgestellt, wenn ihr Iteratortyp contiguous_iterator erfüllt
(öffentliche Memberfunktion von std::ranges::view_interface<D>) [edit]
gibt das erste Element in der abgeleiteten View zurück, bereitgestellt, wenn sie forward_range erfüllt
(öffentliche Member-Funktion von std::ranges::view_interface<D>) [edit]
gibt das n-te Element in der abgeleiteten View zurück, nur bereitgestellt, wenn sie random_access_range erfüllt
(öffentliche Member-Funktion von std::ranges::view_interface<D>) [edit]

[bearbeiten] Deduktionshilfen

[bearbeiten] Verschachtelte Klassen

der Sentinel-Typ
((nur zur Veranschaulichung Exposition-only Member-Klassenschablone)*)

[bearbeiten] Beispiel

#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';
}

Ausgabe

2020 2021 2022 2023 2024 2025
Today is yesterday's tomorrow!

[bearbeiten] Siehe auch

ein view, der aus den ersten N Elementen eines anderen view besteht
(Klassen-Template) (Range-Adaptor-Objekt)[edit]
ein view, der aus den Elementen eines anderen view besteht, wobei die anfängliche Teilsequenz von Elementen übersprungen wird, bis zum ersten Element, bei dem das Prädikat false zurückgibt
(Klassen-Template) (Range-Adaptor-Objekt)[edit]