Udostępnij za pośrednictwem


drop_while_view class (Standardowa biblioteka C++)

Widok zawierający elementy zakresu, które pozostają po usunięciu elementów wiodących pasujących do predykatu.

Składnia

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>>;

Parametry szablonu

V
Typ widoku bazowego.

P
Typ predykatu, który określa elementy wiodące do upuszczania.

Właściwości widoku

Opis poniższych wpisów można znaleźć w temacie View class characteristics (Wyświetlanie właściwości klas)

Characteristic opis
Adapter zakresu views::drop_while
Zakres bazowy Musi być spełniony forward_range lub wyższy, a iteratory bazowego zakresu muszą modelować sized_sentinel_for
Typ elementu Taki sam jak zakres bazowy
Wyświetl kategorię iteratora Taki sam jak zakres bazowy
Wielkości Tylko wtedy, gdy zakres bazowy spełnia random_access_range
Jest constiterowalne Nie.
Wspólny zakres Tylko wtedy, gdy zakres bazowy spełnia common_range
Pożyczony zakres Tylko wtedy, gdy zakres bazowy spełnia borrowed_range

Elementy członkowskie

Funkcje składowe Opis
Konstruktory Skonstruuj widok.
base Pobierz widok bazowy.
begin Pobierz iterator do pierwszego elementu.
end Pobierz element sentinel na końcu widoku.
pred Uzyskaj odwołanie do predykatu określającego, które elementy mają być upuszczane.
Dziedziczone z view_interface Opis
backC++20 Pobierz ostatni element.
dataC++20 Pobierz wskaźnik do pierwszego elementu.
emptyC++20 Sprawdź, czy widok jest pusty.
frontC++20 Pobierz pierwszy element.
operator[]C++20 Pobierz element na określonej pozycji.
operator boolC++20 Sprawdź, czy widok nie jest pusty.
size Pobierz liczbę elementów w widoku.

Wymagania

Nagłówek: <ranges> (od C++20)

Przestrzeń nazw: std::ranges

Opcja kompilatora: /std:c++20 lub nowsza jest wymagana.

Konstruktory

Skonstruuj wystąpienie klasy drop_while_view.

1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;

Parametry

base
Zakres bazowy.

pred
Predykat określający elementy wiodące do upuszczania.

Aby uzyskać informacje o typach parametrów szablonu, zobacz Parametry szablonu.

Wartość zwracana

drop_while_view Wystąpienie.

Uwagi

Najlepszym sposobem utworzenia elementu drop_while_view jest użycie adaptera views::drop_while zakresu. Adaptery zakresów są zamierzonym sposobem tworzenia klas widoków. Typy widoków są widoczne w przypadku utworzenia własnego niestandardowego typu widoku.

1) Przeniesienie konstruuje drop_while_view element z base widoku i pred predykatu. Obie base metody i pred są przenoszone za pośrednictwem metody std::move().
2) Konstrukcje domyślne a drop_while_view.

Przykład: 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

Pobierz widok bazowy.

// 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() &&;

Parametry

Brak.

Zwraca

Widok bazowy.

begin

Pobierz iterator do pierwszego elementu w widoku.

constexpr auto begin();

Wartość zwracana

Iterator wskazujący pierwszy element w widoku. Zachowanie jest niezdefiniowane, jeśli widok nie ma predykatu.

Obraz wektora z elementami 10, 20 i 30. Pierwszy element zawiera wartość 10 i ma etykietę begin(). Ostatni element zawiera wartość 30 i ma etykietę

end

Pobierz element sentinel na końcu widoku.

constexpr auto end()

Wartość zwracana

Sentinel, który jest zgodny z ostatnim elementem w widoku:

Obraz wektora z elementami 10, 20 i 30. Pierwszy element zawiera wartość 10 i ma etykietę begin(). Ostatni element zawiera wartość 30 i ma etykietę

pred

Uzyskaj odwołanie do predykatu określającego, które elementy wiodące do upuszczania.

constexpr const Pred& pred() const;

Wartość zwracana

Odwołanie do predykatu.

Uwagi

Jeśli widok nie przechowuje predykatu, zachowanie jest niezdefiniowane.

Przykład: 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

Zobacz też

<ranges>
drop_while adapter zakresu
take_while adapter zakresu
take_while_view
klasy widoków