Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
Definiert im Header <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)
Aufrufsignatur
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 Bereichsadapter, der eine view der Elemente aus einer zugrundeliegenden Sequenz darstellt, beginnend am Anfang und endend beim ersten Element, für das das 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 Teilausdrücke e und f .

take_while_view modelliert die Konzepte contiguous_range , random_access_range , bidirectional_range , forward_range und input_range , wenn die zugrundeliegende View V die jeweiligen Konzepte modelliert.

Inhaltsverzeichnis

Datenmitglieder

Mitglied Beschreibung
V base_ (privat) die zugrundeliegende Ansicht
( Nur-Darstellungs-Memberobjekt* )
copyable-box <Pred> (bis C++23) movable-box <Pred> (seit C++23) pred_ (privat) das zugrundeliegende Funktionsobjekt
( Nur-Darstellungs-Memberobjekt* )

Memberfunktionen

konstruiert einen take_while_view
(öffentliche Elementfunktion)
gibt eine Kopie der zugrundeliegenden (adaptierten) Ansicht zurück
(öffentliche Elementfunktion)
gibt eine Referenz auf das gespeicherte Prädikat zurück
(öffentliche Elementfunktion)
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion)
gibt einen Sentinel zurück, der das Ende repräsentiert
(öffentliche Elementfunktion)
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
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
(C++23)
gibt einen konstanten Iterator zum Anfang des Bereichs zurück
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
(C++23)
gibt einen Sentinel für den konstanten Iterator des Bereichs zurück
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
gibt zurück, ob die abgeleitete Ansicht nicht leer ist, bereitgestellt nur wenn ranges::empty darauf anwendbar ist
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
ruft die Adresse der Daten der abgeleiteten Ansicht ab, bereitgestellt nur wenn ihr Iteratortyp contiguous_iterator erfüllt
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
gibt das erste Element in der abgeleiteten Ansicht zurück, bereitgestellt wenn sie forward_range erfüllt
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
gibt das n te Element in der abgeleiteten Ansicht zurück, bereitgestellt nur wenn sie random_access_range erfüllt
(öffentliche Elementfunktion von std::ranges::view_interface<D> )

Ableitungsleitfäden

Geschachtelte Klassen

der Sentinel-Typ
( Nur zur Darstellung verwendete Member-Klassenvorlage* )

Hinweise

Für forward_iterator s ist views :: take_while ( v, pred ) ähnlich zu ranges:: subrange { ranges:: begin ( v ) , ranges:: find_if_not ( v, pred ) } , wobei Letzteres pred nur während der Konstruktion aufruft (während Ersteres pred bei jedem Vergleich eines gültigen take_while -Iterators mit einem Sentinel aufruft).

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!

Siehe auch

eine view , bestehend aus den ersten N Elementen einer anderen view
(Klassentemplate) (Range-Adapter-Objekt)
eine view , bestehend aus den Elementen einer anderen view , die das anfängliche Teilelement überspringt, bis zum ersten Element, bei dem das Prädikat false zurückgibt
(Klassentemplate) (Range-Adapter-Objekt)