Condividi tramite


take_view classe (libreria standard C++)

Visualizzazione dei primi N elementi da un'altra visualizzazione.

Sintassi

template<view V>
class take_view : public view_interface<take_view<V>>;

Parametri del modello

V
Tipo dell'intervallo sottostante.

Visualizzare le caratteristiche

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

Caratteristica Descrizione
Adattatore di intervallo views::take
Intervallo sottostante Qualsiasi intervallo
Tipo di elemento Uguale all'intervallo sottostante
Visualizzare la categoria iteratore Uguale all'intervallo sottostante
Dimensioni No
Iterabile const Solo se l'intervallo sottostante è const iterabile
Intervallo comune Solo se l'intervallo sottostante random_access_range soddisfa e sized_range
Intervallo preso in prestito Solo se l'intervallo sottostante è borrowed_range

Membri

Funzioni membro Descrizione
Costruttori Costruisci la vista.
baseC++20 Ottenere l'intervallo sottostante.
beginC++20 Ottenere un iteratore al primo elemento.
endC++20 Ottenere l'sentinel alla fine della visualizzazione.
sizeC++20 Ottiene il numero di elementi. L'intervallo sottostante deve soddisfare sized_range.
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.

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 take_view

1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);

Parametri

base
Visualizzazione sottostante.

count
Numero di elementi da accettare dalla parte anteriore della visualizzazione sottostante. Se count è maggiore del numero di elementi nella visualizzazione sottostante, la vista conterrà tutti gli elementi nell'intervallo sottostante.

Per informazioni sul tipo di parametro del modello, vedere Parametri del modello.

Valore restituito

Oggetto take_view, che è una visualizzazione dei primi N elementi di un'altra visualizzazione. Se si specificano più elementi da eliminare rispetto all'intervallo sottostante, viene restituito un oggetto empty_view .

Osservazioni:

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

1) Creare un oggetto take_view senza elementi. La vista sottostante è costruita per impostazione predefinita. base() restituisce una copia di V().
2) Creare un take_view oggetto da un base e un conteggio. base viene spostato tramite std::move().

Se count è minore del numero di elementi nell'intervallo sottostante, count determina le dimensioni dell'oggetto take_view.
Se count è maggiore del numero di elementi nell'intervallo sottostante, include take_view tutti gli elementi nell'intervallo sottostante.

Esempio: take_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 newView = std::views::take(v, 3);
    
    for (auto& e : newView)
    {
        std::cout << e << ' '; // 0 1 2
    }
    std::cout << '\n';

    // Use the '|' operator to create a take_view
    for (auto i : v | std::views::take(3))
    {
        std::cout << i << ' '; // 0 1 2
    }
}
0 1 2
0 1 2

base

Ottiene una copia della visualizzazione sottostante.

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

Parametri

Nessuna.

Valore restituito

Visualizzazione sottostante.

begin

Ottiene un iteratore al primo elemento nella visualizzazione.

constexpr auto begin() requires (!Simple_view<V>);
constexpr auto begin() const requires range<const V>;

Parametri

Nessuna.

Valore restituito

Iteratore che punta al primo elemento della 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().

Osservazioni:

Per 1, il Simple_view<V> requisito indica che la vista V e const V deve avere gli stessi tipi di iteratore e sentinel.

end

Ottenere l'sentinel alla fine della visualizzazione.

1) constexpr auto end() requires !(Simple_view<V>);
2) constexpr auto end() const requires range<const V>;

Parametri

Nessuna.

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().

Osservazioni:

Per 1, il Simple_view<V> requisito indica che la vista V e const V deve avere gli stessi tipi di iteratore e sentinel.

size

Ottiene il numero di elementi.

constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;

Parametri

Nessuna.

Valore restituito

Numero di elementi in take_view.
Se è take_view stato costruito con un oggetto esplicito count:

  • se count è minore del numero di elementi nell'intervallo sottostante, viene restituito come dimensione della visualizzazione.
  • se count è maggiore del numero di elementi nell'intervallo sottostante, la dimensione della vista è ranges::size(base).

Vedi anche

<ranges>
take adattatore di intervallo
classi di visualizzazione