drop_while_view
Klasse (C++-Standardbibliothek)
Eine Ansicht, die die Elemente eines Bereichs enthält, die verbleiben, sobald die führenden Elemente, die einem Prädikat entsprechen, abgelegt werden.
Syntax
template<ranges::view V, class P>
requires ranges::input_range<V> &&
std::is_object_v<P> &&
std::indirect_unary_predicate<const P, ranges::iterator_t<V>>
class drop_while_view : public ranges::view_interface<drop_while_view<V, P>>;
Vorlagenparameter
V
Der Typ der zugrunde liegenden Ansicht.
P
Der Typ des Prädikats, das die zu löschenden Elemente bestimmt.
Eigenschaften der Ansicht
Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen
Merkmal | Beschreibung |
---|---|
Range Adaptor | views::drop_while |
Zugrunde liegender Bereich | Muss erfüllen oder höher sein forward_range , und die iteratoren des zugrunde liegenden Bereichs müssen modellieren sized_sentinel_for |
Elementtyp | Identisch mit dem zugrunde liegenden Bereich |
Iteratorkategorie anzeigen | Identisch mit dem zugrunde liegenden Bereich |
Größer eingestellt | Nur, wenn der zugrunde liegende Bereich erfüllt ist random_access_range |
Ist const -iterierbar |
No |
Allgemeiner Bereich | Nur, wenn der zugrunde liegende Bereich erfüllt ist common_range |
Geliehener Bereich | Nur, wenn der zugrunde liegende Bereich erfüllt ist borrowed_range |
Member
Memberfunktionen | Beschreibung |
---|---|
Konstruktoren | Erstellen Sie die Ansicht. |
base |
Rufen Sie die zugrunde liegende Ansicht ab. |
begin |
Rufen Sie einen Iterator zum ersten Element ab. |
end |
Rufen Sie den Sentinel am Ende der Ansicht ab. |
pred |
Rufen Sie einen Verweis auf das Prädikat ab, das bestimmt, welche Elemente abzulegen sind. |
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 eines drop_while_view
.
1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;
Parameter
base
Der zugrunde liegende Bereich.
pred
Das Prädikat, das die führenden Elemente bestimmt, die abzulegen sind.
Informationen zu den Vorlagenparametertypen finden Sie unter Vorlagenparameter.
Rückgabewert
Eine drop_while_view
-Instanz.
Hinweise
Die beste Methode zum Erstellen eines Steuerelements drop_while_view
ist die Verwendung des views::drop_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 drop_while_view
aus einer base
Ansicht und einem pred
Prädikat. Beide base
und pred
werden über std::move()
verschoben.
2) Standardkonstrukte eines drop_while_view
.
Beispiel: drop_while_view
// requires /std:c++20 or later
#include <ranges>
#include <vector>
#include <iostream>
void print(auto v)
{
for (auto& x : v)
{
std::cout << x << ' ';
}
std::cout << '\n';
}
int main()
{
std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
auto myView = std::views::drop_while(
v,
[](int i) {return i >= 0; });
print(myView); // -4 5 6
auto myView2 = v | std::views::drop_while(
[](int i) {return i < 5; });
print(myView2); // 5 6
}
-4 5 6
5 6
base
Rufen Sie die zugrunde liegende Ansicht ab.
// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;
// Uses std::move() to return the underlying view
constexpr V base() &&;
Parameter
Keine.
Gibt zurück
Die zugrunde liegende Ansicht.
begin
Rufen Sie einen Iterator zum ersten Element in der Ansicht ab.
constexpr auto begin();
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.
end
Rufen Sie den Sentinel am Ende der Ansicht ab.
constexpr auto end()
Rückgabewert
Der Sentinel, der auf das letzte Element in der Ansicht folgt:
pred
Rufen Sie einen Verweis auf das Prädikat ab, das bestimmt, welche führenden Elemente abzulegen sind.
constexpr const Pred& pred() const;
Rückgabewert
Ein Verweis auf das Prädikat.
Hinweise
Wenn die Ansicht kein Prädikat speichert, ist das Verhalten nicht definiert.
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::drop_while(
[](int i) {return i < 5; }); // drop the leading elements < 5
std::cout << std::boolalpha << mv.pred()(v[6]); // outputs "false" because v[6] = 6 and 6 is not less than 5 (the predicate)
}
false
Siehe auch
<ranges>
drop_while
Range Adaptor
take_while
Range Adaptor
take_while_view
Anzeigen von Klassen