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_view
non 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 strings
e 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 |
Sì |
Intervallo comune | Sì |
Intervallo preso in prestito | Sì |
Membri
Funzioni membro | Descrizione |
---|---|
Costruttori C++20 | Costruire un oggetto empty_view . |
begin C++20 |
Restituisce nullptr . |
end C++20 |
Restituisce nullptr . |
size C++20 |
Restituisce 0. |
Ereditato da view_interface |
Descrizione |
back C++20 |
Restituisce un comportamento non definito. |
data C++20 |
Restituisce nullptr . |
empty C++20 |
Restituisce true . |
front C++20 |
Restituisce un comportamento non definito. |
operator[] C++20 |
Restituisce un comportamento non definito. |
operator bool C++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