Condividi tramite


drop_while_view classe (libreria standard C++)

Visualizzazione che contiene gli elementi di un intervallo che rimangono una volta eliminati gli elementi iniziali che corrispondono a un predicato.

Sintassi

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

Parametri del modello

V
Tipo della vista sottostante.

P
Tipo del predicato che determina gli elementi iniziali da eliminare.

Visualizzare le caratteristiche

Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe

Caratteristica Descrizione
Adattatore di intervallo views::drop_while
Intervallo sottostante Deve soddisfare forward_range o superiore e gli iteratori dell'intervallo sottostante devono modellare sized_sentinel_for
Tipo di elemento Uguale all'intervallo sottostante
Visualizzare la categoria iteratore Uguale all'intervallo sottostante
Dimensioni Solo se l'intervallo sottostante soddisfa random_access_range
Iterabile const No
Intervallo comune Solo se l'intervallo sottostante soddisfa common_range
Intervallo preso in prestito Solo se l'intervallo sottostante soddisfa borrowed_range

Membri

Funzioni membro Descrizione
Costruttori Costruisci la vista.
base Ottenere la visualizzazione sottostante.
begin Ottenere un iteratore al primo elemento.
end Ottenere l'sentinel alla fine della visualizzazione.
pred Ottenere un riferimento al predicato che determina gli elementi da eliminare.
Ereditato da view_interface Descrizione
backC++20 Ottiene l'ultimo elemento.
dataC++20 Ottenere un puntatore al primo elemento.
emptyC++20 Verificare se la visualizzazione è vuota.
frontC++20 Ottenere il primo elemento.
operator[]C++20 Ottiene l'elemento nella posizione specificata.
operator boolC++20 Verificare se la visualizzazione non è vuota.
size Ottiene il numero di elementi nella visualizzazione.

Requisiti

Intestazione: <ranges> (da C++20)

Spazio dei nomi: std::ranges

Opzione del compilatore: /std:c++20 o versione successiva è obbligatoria.

Costruttori

Costruire un'istanza di un oggetto drop_while_view.

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

Parametri

base
Intervallo sottostante.

pred
Predicato che determina gli elementi iniziali da eliminare.

Per informazioni sui tipi di parametri del modello, vedere Parametri del modello.

Valore restituito

Istanza di drop_while_view.

Osservazioni:

Il modo migliore per creare un drop_while_view oggetto consiste nell'usare l'adattatore views::drop_while di intervallo. Gli adattatori di intervallo sono il modo previsto per creare classi di visualizzazione. I tipi di visualizzazione vengono esposti nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.

1) Sposta costruisce l'oggetto drop_while_view da una base vista e un pred predicato. Entrambi base e pred vengono spostati tramite std::move().
2) Default-constructs a drop_while_view.

Esempio: 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

Ottenere la visualizzazione sottostante.

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

Parametri

Nessuna.

Valori restituiti

Visualizzazione sottostante.

begin

Ottiene un iteratore al primo elemento nella visualizzazione.

constexpr auto begin();

Valore restituito

Iteratore che punta al primo elemento della visualizzazione. Il comportamento non è definito se la vista non ha un predicato.

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

end

Ottenere l'sentinel alla fine della visualizzazione.

constexpr auto end()

Valore restituito

Sentinel che segue l'ultimo elemento nella visualizzazione:

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

pred

Ottenere un riferimento al predicato che determina quali elementi iniziali eliminare.

constexpr const Pred& pred() const;

Valore restituito

Riferimento al predicato.

Osservazioni:

Se la visualizzazione non archivia un predicato, il comportamento non è definito.

Esempiopred

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

Vedi anche

<ranges>
drop_while adattatore di intervallo
take_while adattatore di intervallo
take_while_view
classi di visualizzazione