take_while_view
Klasse (C++-Standardbibliothek)
Eine Ansicht, die die führenden Elemente eines Bereichs enthält, die einem Prädikat entsprechen.
Syntax
template<view V, class Pred> requires
input_range<V> && is_object_v<Pred> &&
indirect_unary_predicate<const Pred, iterator_t<V>>
class take_while_view : public view_interface<take_while_view<V, Pred>>;
Vorlagenparameter
Pred
Der Typ des Prädikats, das die führenden Elemente bestimmt, die in der Ansicht platziert werden sollen.
V
Der Typ der zugrunde liegenden Ansicht.
Eigenschaften der Ansicht
Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen
Merkmal | Beschreibung |
---|---|
Range Adaptor | views::take_while |
Zugrunde liegender Bereich | Muss erfüllen input_range oder höher |
Elementtyp | Identisch mit dem zugrunde liegenden Bereich |
Iteratorkategorie anzeigen | Identisch mit dem zugrunde liegenden Bereich |
Größer eingestellt | No |
Ist const -iterierbar |
Nur wenn der zugrunde liegende Bereich iterierbar ist const und das Prädikat mit const Verweisen arbeiten kann. |
Allgemeiner Bereich | No |
Geliehener Bereich | No |
Member
Memberfunktionen | Beschreibung |
---|---|
Konstruktoren C++20 | Erstellen Sie die Ansicht. |
base C++20 |
Rufen Sie den zugrunde liegenden Bereich ab. |
begin C++20 |
Rufen Sie einen Iterator zum ersten Element ab. |
end C++20 |
Rufen Sie den Sentinel am Ende der Ansicht ab. |
pred C++20 |
Rufen Sie einen Verweis auf das Prädikat ab, das bestimmt, welche Elemente sie einnehmen sollen. |
Geerbt von view_interface |
Beschreibung |
back C++20 |
Rufen Sie das letzte Element ab. |
data C++20 |
Rufen Sie einen Zeiger auf das erste Element ab. |
empty C++20 |
Testen Sie, ob die Ansicht leer ist. |
front C++20 |
Rufen Sie das erste Element ab. |
operator[] C++20 |
Rufen Sie das Element an der angegebenen Position ab. |
operator bool C++20 |
Testen Sie, ob die Ansicht nicht leer ist. |
size |
Ruft die Anzahl der Elemente in der Ansicht ab. |
Anforderungen
Header: <ranges>
(seit C++20)
Namespace:std::ranges
Compileroption: /std:c++20
oder höher ist erforderlich.
Konstruktoren
Erstellen einer Instanz einer take_while_view
1) take_while_view() requires
default_initializable<V> &&
default_initializable<Pred> = default;
2) constexpr take_while_view(V base, Pred pred);
Parameter
base
Die zugrunde liegende Ansicht.
pred
Das Prädikat, das die führenden Elemente bestimmt, die in der Ansicht platziert werden sollen.
Informationen zu Vorlagenparametertypen finden Sie unter Vorlagenparameter.
Rückgabewert
Ein take_while_view
-Objekt.
Hinweise
Die beste Methode zum Erstellen eines Steuerelements take_while_view
ist die Verwendung des views::take_while
Bereichsadapters. Bereichsadapter sind die beabsichtigte Möglichkeit zum Erstellen von Ansichtsklassen. Die Ansichtstypen werden für den Fall verfügbar gemacht, dass Sie ihren eigenen benutzerdefinierten Ansichtstyp erstellen möchten.
1) Verschieben von Konstrukten take_while_view
aus einer base
Ansicht und einem pred
Prädikat. Beide base
und pred
werden über std::move()
verschoben.
2) Erstellt eine leere take_while_view
. Die zugrunde liegende Ansicht und das Prädikat sind standardmäßig konstruiert.
Beispiel: take_while_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
auto twv = std::views::take_while(v, [](int i) {return i >= 0; });
for (auto& e : twv)
{
std::cout << e << ' '; // 0 1 2 3
}
std::cout << '\n';
// Using the '|' operator to create a take_view
for (auto i : v | std::views::take_while([](int i) {return i < 5; }))
{
std::cout << i << ' '; // 0 1 2 3 -4
}
}
0 1 2 3
0 1 2 3 -4
base
Ruft eine Kopie der zugrunde liegenden Ansicht ab.
// Uses a copy constructor to return the underlying view
1) constexpr V base() const& requires std::copy_constructible<V>;
// Uses a move constructor to return the underlying view
2) constexpr V base() &&;
Parameter
Keine.
Gibt zurück
Eine Kopie der zugrunde liegenden Ansicht.
begin
Rufen Sie einen Iterator zum ersten Element in der Ansicht ab.
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires
range<const V> &&
indirect_unary_predicate<const Pred, iterator_t<const V>>
Parameter
Keine
Rückgabewert
Ein Iterator, der auf das erste Element in der Ansicht zeigt. Das Verhalten ist nicht definiert, wenn die Ansicht kein Prädikat aufweist.
Hinweise
Für 1 bedeutet die Simple_view
Anforderung, dass eine Ansicht V
und const V
dieselben Iterator- und Sentineltypen aufweisen.
end
Rufen Sie den Sentinel am Ende der Ansicht ab.
1) constexpr auto end() requires (!Simple_view<V>);
2) constexpr auto end() const requires
range<const V> &&
indirect_unary_predicate<const Pred, iterator_t<const V>
Parameter
Keine
Rückgabewert
Der Sentinel, der auf das letzte Element in der Ansicht folgt.
Hinweise
Für 1 bedeutet die Simple_view
Anforderung, dass eine Ansicht V
und const V
dieselben Iterator- und Sentineltypen aufweisen.
pred
Rufen Sie einen Verweis auf das Prädikat ab, das zum Auswählen der führenden Elemente in der Ansicht verwendet wird.
constexpr const Pred& pred() const;
Rückgabewert
Ein Verweis auf das Prädikat, das zum Auswählen der führenden Elemente in der Ansicht verwendet wird.
Beispiel: pred
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
auto mv = v | std::views::take_while(
[](int i) {return i < 5; });
std::cout << std::boolalpha << mv.pred()(v[6]); // outputs false because v[6] = 6 and 6 is not less than 5 (the predicate)
}
Siehe auch
<ranges>
take_view
take_while
Range Adaptor
Anzeigen von Klassen