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
backC++20 Rufen Sie das letzte Element ab.
dataC++20 Rufen Sie einen Zeiger auf das erste Element ab.
emptyC++20 Testen Sie, ob die Ansicht leer ist.
frontC++20 Rufen Sie das erste Element ab.
operator[]C++20 Rufen Sie das Element an der angegebenen Position ab.
operator boolC++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.

Abbildung eines Vektors mit den Elementen 10, 20 und 30. Das erste Element enthält 10 und ist mit

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:

Abbildung eines Vektors mit den Elementen 10, 20 und 30. Das erste Element enthält 10 und ist mit

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