Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Ansicht ohne Elemente. Diese Ansicht ist für Testzwecke nützlich, z. B. zum Aufrufen von Code, der mit einer Ansicht bereitgestellt werden muss, aber nicht auf die zugrunde liegenden Daten zugreifen muss.
Syntax
template<class T>
requires std::is_object_v<T>
class empty_view : public ranges::view_interface<empty_view<T>>;
Vorlagenparameter
T
Der Typ des Elements. Obwohl in einem empty_viewBereich keine Elemente vorhanden sind, sind alle Bereiche homogen. Das heißt, sie haben Elemente eines bestimmten Typs. Obwohl ein Element empty_view keine Elemente hat, hat es immer noch einen Typ, z. B. einen empty_view von int, oder stringsusw.
Eigenschaften der Ansicht
Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen
| Merkmal | Beschreibung |
|---|---|
| Range Adaptor | views::empty |
| Zugrunde liegender Bereich | Keine |
| Elementtyp | Wie angegeben, wenn die Erstellung erfolgt empty_view |
| Iteratorkategorie anzeigen | contiguous_range |
| Größer eingestellt | Ja. Gibt immer 0 zurück. |
Ist const-iterierbar |
Ja |
| Allgemeiner Bereich | Ja |
| Geliehener Bereich | Ja |
Member
| Memberfunktionen | Beschreibung |
|---|---|
| Konstruktoren C++20 | Erstellen eines empty_view. |
beginC++20 |
Gibt nullptr zurück. |
endC++20 |
Gibt nullptr zurück. |
sizeC++20 |
Gibt 0 (null) zurück |
Geerbt von view_interface |
Beschreibung |
backC++20 |
Führt zu einem nicht definierten Verhalten. |
dataC++20 |
Gibt nullptr zurück. |
emptyC++20 |
Gibt true zurück. |
frontC++20 |
Führt zu einem nicht definierten Verhalten. |
operator[]C++20 |
Führt zu einem nicht definierten Verhalten. |
operator boolC++20 |
Gibt false zurück. |
Hinweise
Die beste Methode zum Erstellen eines Steuerelements empty_view ist die Verwendung des empty Bereichsadapters. Bereichsadapter sind die beabsichtigte Möglichkeit zum Erstellen von Ansichtsklassen. Die Ansichtstypen werden für den Fall verfügbar gemacht, dass Sie ihren eigenen benutzerdefinierten Ansichtstyp erstellen möchten.
Da es niemals Elemente in einer empty_viewCompileroptimierung geben kann, sind bestimmte Compileroptimierungen möglich. Beispielsweise wird der Compiler eliminiert for (auto e : std::views::empty<int>) {...} , da er weiß, dass nichts zu durchlaufen ist.
Eine weitere Verwendung ist empty_view das Aufteilen eines split_view empty_view Trennzeichens, was zu einem Bereich einzelner Elementbereiche führt.
Anforderungen
Header: <ranges> (seit C++20)
Namespace:std::ranges
Compileroption: /std:c++20 oder höher ist erforderlich.
Konstruktoren
Erstellen Sie eine Instanz von empty_view.
template<class T>
inline constexpr empty_view<T> empty{};
Parameter
T
Der Typ des zugrunde liegenden Elements, von dem keine vorhanden ist.
Hinweise
Die beste Methode zum Erstellen eines Steuerelements empty_view ist die Verwendung des empty Bereichsadapters.
Beispiel: empty_view
// requires /std:c++20 or later
#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
Führt zu einem nicht definierten Verhalten.
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>;
Parameter
Keine
Rückgabewert
Keine.
Hinweise
Das Aufrufen dieser Funktion in einem Debugbuild löst eine Assertion aus, die für eine leere view_interfaceFunktion aufgerufen wurde.
begin
Gibt zurück nullptr , da es kein erstes Element in der Ansicht gibt.
static constexpr T* begin() noexcept
Rückgabewert
nullptr
data
Gibt zurück nullptr , da kein erstes Element in der Ansicht vorhanden ist, um einen Zeiger abzurufen.
static constexpr T* data() noexcept
Rückgabewert
nullptr.
empty
Testen Sie, ob die abgeleitete Ansicht leer ist.
static constexpr bool empty() noexcept
Parameter
Keine
Rückgabewert
Gibt true zurück.
end
Gibt zurück nullptr , da in der Ansicht keine Elemente vorhanden sind.
static constexpr T* end() noexcept
Rückgabewert
nullptr.
front
Führt zu einem nicht definierten Verhalten.
constexpr auto front()
requires ranges::forward_range<T>;
constexpr auto front() const
requires ranges::forward_range<const T>;
Parameter
Keine
Rückgabewert
Keine.
Hinweise
Das Aufrufen dieser Funktion in einem Debugbuild löst eine Assertion aus, die für eine leere view_interfaceFunktion aufgerufen wurde.
operator[]
Führt zu einem nicht definierten Verhalten.
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;
Parameter
pos
Die Position relativ zum Anfangs iterator des zurückzugebenden Elements.
Rückgabewert
Keine.
Hinweise
Das Aufrufen dieser Funktion in einem Debugbuild löst eine Assertion aus, für die der Index außerhalb des Bereichs view_interfaceliegt.
operator bool
Testen Sie, ob die abgeleitete Ansicht nicht leer ist.
constexpr explicit operator bool()
requires requires { ranges::empty(T ()); };
constexpr explicit operator bool() const
requires requires { ranges::empty(T ()); };
Parameter
Keine
Rückgabewert
Gibt false zurück.
Beispiel: (bool)
// requires /std:c++20 or later
#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
Rufen Sie die Anzahl der Elemente in der Ansicht ab, die immer 0 sind.
static constexpr size_t size()
Parameter
Keine
Rückgabewert
0.
Siehe auch
<ranges>
empty Range Adaptor
single_view
Anzeigen von Klassen