std::ranges::views::take_while, std::ranges::take_while_view
| Definiert in 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 /* see below */
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) | |
false zurückgibt.views::take_while(e, f) ist ausdrucksäquivalent zu take_while_view(e, f) für alle geeigneten 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.
Datenelemente
| Element | Beschreibung | ||||
V base_ (privat)
|
die zugrundeliegende Ansicht (nur zur Veranschaulichung dargestelltes Mitgliedsobjekt*) | ||||
pred_ (privat)
|
das zugrundeliegende Funktionsobjekt (nur zur Veranschaulichung dargestelltes Mitgliedsobjekt*) |
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 ranges::view_interface | |
| gibt zurück, ob die abgeleitete View leer ist, nur bereitgestellt, 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 View nicht leer ist, nur bereitgestellt, wenn ranges::empty darauf anwendbar ist (öffentliche Elementfunktion von std::ranges::view_interface<D>)
| |
| holt die Adresse der Daten der abgeleiteten View, nur bereitgestellt, wenn ihr Iteratortyp contiguous_iterator erfüllt (öffentliche Elementfunktion von std::ranges::view_interface<D>)
| |
| gibt das erste Element in der abgeleiteten View zurück, bereitgestellt, wenn sie forward_range erfüllt (öffentliche Elementfunktion von std::ranges::view_interface<D>)
| |
gibt das nte Element in der abgeleiteten View zurück, nur bereitgestellt, 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
|
(C++20)
|
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) |