Condividi tramite


empty_view classe (libreria standard C++)

Visualizzazione senza elementi. Questa vista è utile per scopi di test, ad esempio per chiamare il codice che deve essere fornito con una vista, ma non è necessario accedere ai dati sottostanti.

Sintassi

template<class T>
    requires std::is_object_v<T>
class empty_view : public ranges::view_interface<empty_view<T>>;

Parametri del modello

T
Tipo dell'elemento. Anche se in un oggetto empty_viewnon sono presenti elementi , tutti gli intervalli sono omogenei. Ovvero, hanno elementi di un particolare tipo. Pertanto, anche se un oggetto empty_view non ha elementi, ha ancora un tipo, ad esempio un empty_view di int, o stringse così via.

Visualizzare le caratteristiche

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

Caratteristica Descrizione
Adattatore di intervallo views::empty
Intervallo sottostante None
Tipo di elemento Come specificato al momento della creazione dell'oggetto empty_view
Visualizzare la categoria iteratore contiguous_range
Dimensioni Sì. Restituisce sempre 0
Iterabile const
Intervallo comune
Intervallo preso in prestito

Membri

Funzioni membro Descrizione
Costruttori C++20 Costruire un oggetto empty_view.
beginC++20 Restituisce nullptr.
endC++20 Restituisce nullptr.
sizeC++20 Restituisce 0.
Ereditato da view_interface Descrizione
backC++20 Restituisce un comportamento non definito.
dataC++20 Restituisce nullptr.
emptyC++20 Restituisce true.
frontC++20 Restituisce un comportamento non definito.
operator[]C++20 Restituisce un comportamento non definito.
operator boolC++20 Restituisce false.

Osservazioni:

Il modo migliore per creare un empty_view oggetto consiste nell'usare l'adattatore empty 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.

Poiché non possono mai essere presenti elementi in un oggetto empty_view, sono possibili alcune ottimizzazioni del compilatore. Ad esempio, il compilatore eliminerà for (auto e : std::views::empty<int>) {...} perché sa che non c'è nulla da scorrere.

Un altro uso per empty_view è la suddivisione di un split_view oggetto con un empty_view delimitatore, che comporta un intervallo di intervalli di singoli elementi.

Requisiti

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

Spazio dei nomi: std::ranges

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

Costruttori

Creare un'istanza di un empty_view.

template<class T>
inline constexpr empty_view<T> empty{};

Parametri

T
Tipo dell'elemento sottostante, di cui non esiste nessuno.

Osservazioni:

Il modo migliore per creare un empty_view oggetto consiste nell'usare l'adattatore empty di intervallo.

Esempioempty_view

// requires /std:c++20 or higher
#include <ranges>
#include <iostream>

int main()
{
    auto anEmptyView = std::views::empty<int>;
    bool isNotEmpty = (bool)anEmptyView;
    std::cout << std::boolalpha << isNotEmpty << "\n"; // false
    std::cout << std::boolalpha << anEmptyView.empty(); // true
}
false
true

back

Restituisce un comportamento non definito.

constexpr auto back()
    requires ranges::bidirectional_range<T> && ranges::common_range<T>;

constexpr auto back() const
    requires ranges::bidirectional_range<const T> && ranges::common_range<const T>;

Parametri

Nessuna.

Valore restituito

Nessuno.

Osservazioni:

La chiamata di questa funzione in una compilazione di debug genera un'asserzione che la funzione è stata chiamata su un oggetto vuoto view_interface.

begin

Restituisce nullptr perché non è presente un primo elemento nella visualizzazione.

static constexpr T* begin() noexcept

Valore restituito

nullptr

data

Restituisce nullptr perché non esiste un primo elemento nella visualizzazione per ottenere un puntatore a .

static constexpr T* data() noexcept

Valore restituito

nullptr.

empty

Verificare se la vista derivata è vuota.

static constexpr bool empty() noexcept

Parametri

Nessuna.

Valore restituito

Restituisce true.

end

Restituisce nullptr perché nella visualizzazione non sono presenti elementi.

static constexpr T* end() noexcept

Valore restituito

nullptr.

front

Restituisce un comportamento non definito.

constexpr auto front()
    requires ranges::forward_range<T>;
constexpr auto front() const
    requires ranges::forward_range<const T>;

Parametri

Nessuna.

Valore restituito

Nessuno.

Osservazioni:

La chiamata di questa funzione in una compilazione di debug genera un'asserzione che la funzione è stata chiamata su un oggetto vuoto view_interface.

operator[]

Restituisce un comportamento non definito.

template<ranges::random_access_range R = T>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos);

template<ranges::random_access_range R = const T>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos) const;

Parametri

pos
Posizione, relativa all'iteratore iniziale, dell'elemento da restituire.

Valore restituito

Nessuno.

Osservazioni:

La chiamata di questa funzione in una compilazione di debug genera un'asserzione che l'indice non è compreso nell'intervallo per view_interface.

operator bool

Verificare se la vista derivata non è vuota.

constexpr explicit operator bool()
requires requires { ranges::empty(T ()); };

constexpr explicit operator bool() const
requires requires { ranges::empty(T ()); };

Parametri

Nessuna.

Valore restituito

Restituisce false.

Esempio(bool)

// requires /std:c++20 or higher
#include <ranges>
#include <iostream>

int main()
{
    auto anEmptyView = std::views::empty<int>;

    if (anEmptyView) // check if anEmptyView isn't empty
    {
        std::cout << "Error: why does an empty_view have elements?\n";
    }
    else
    {
        std::cout << "Correct: an empty_view is not not empty\n";
    }
}
Correct: an empty_view is not not empty

size

Ottiene il numero di elementi nella visualizzazione, che sarà sempre 0.

static constexpr size_t size()

Parametri

Nessuna.

Valore restituito

0.

Vedi anche

<ranges>
empty adattatore di intervallo
single_view
classi di visualizzazione