std::ranges::views::take_while, std::ranges::take_while_view
Von cppreference.com
| Definiert in der Header-Datei <ranges> |
||
| template< ranges::view V, class Pred > requires ranges::input_range<V> && |
(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 */ |
(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) | |
| gibt eine Kopie der zugrunde liegenden (angepassten) View zurück (public member function) | |
| gibt eine Referenz auf die gespeicherte Prädikatfunktion zurück (public member function) | |
| gibt einen Iterator zum Anfang zurück (öffentliche Member-Funktion) | |
| gibt einen Sentinel zurück, der das Ende repräsentiert (öffentliche Member-Funktion) | |
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>) | |
| (C++23) |
gibt einen konstanten Iterator zum Anfang des Bereichs zurück (public member function of std::ranges::view_interface<D>) |
| (C++23) |
gibt ein Sentinel für den konstanten Iterator des Bereichs zurück (public member function of std::ranges::view_interface<D>) |
| 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>) | |
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>) | |
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>) | |
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>) | |
[bearbeiten] Deduktionshilfen
[bearbeiten] Verschachtelte Klassen
| der Sentinel-Typ ((nur zur Veranschaulichung Exposition-only Member-Klassenschablone)*) |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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
| (C++20) |
ein view, der aus den ersten N Elementen eines anderen view besteht(Klassen-Template) (Range-Adaptor-Objekt) |
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) |