take_view
Klasse (C++-Standardbibliothek)
Eine Ansicht der ersten N-Elemente aus einer anderen Ansicht.
Syntax
template<view V>
class take_view : public view_interface<take_view<V>>;
Vorlagenparameter
V
Der Typ des zugrunde liegenden Bereichs.
Eigenschaften der Ansicht
Eine Beschreibung der folgenden Einträge finden Sie unter Anzeigen von Klassenmerkmalen
Merkmal | Beschreibung |
---|---|
Range Adaptor | views::take |
Zugrunde liegender Bereich | Beliebiger Bereich |
Elementtyp | Identisch mit dem zugrunde liegenden Bereich |
Iteratorkategorie anzeigen | Identisch mit dem zugrunde liegenden Bereich |
Größer eingestellt | No |
Ist const -iterierbar |
Nur, wenn der zugrunde liegende Bereich iterierbar ist const |
Allgemeiner Bereich | Nur, wenn der zugrunde liegende Bereich erfüllt random_access_range und sized_range |
Geliehener Bereich | Nur, wenn der zugrunde liegende Bereich borrowed_range |
Member
Memberfunktionen | Beschreibung |
---|---|
Konstruktoren | Erstellen Sie die Ansicht. |
base C++20 |
Rufen Sie den zugrunde liegenden Bereich ab. |
begin C++20 |
Rufen Sie einen Iterator zum ersten Element ab. |
end C++20 |
Rufen Sie den Sentinel am Ende der Ansicht ab. |
size C++20 |
Ruft die Anzahl der Elemente ab. Der zugrunde liegende Bereich muss erfüllt sein sized_range . |
Geerbt von view_interface |
Beschreibung |
back C++20 |
Rufen Sie das letzte Element ab. |
data C++20 |
Rufen Sie einen Zeiger auf das erste Element ab. |
empty C++20 |
Testen Sie, ob die Ansicht leer ist. |
front C++20 |
Rufen Sie das erste Element ab. |
operator[] C++20 |
Rufen Sie das Element an der angegebenen Position ab. |
operator bool C++20 |
Testen Sie, ob die Ansicht nicht leer ist. |
Anforderungen
Header: <ranges>
(seit C++20)
Namespace:std::ranges
Compileroption: /std:c++20
oder höher ist erforderlich.
Konstruktoren
Erstellen einer Instanz einer take_view
1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);
Parameter
base
Die zugrunde liegende Ansicht.
count
Die Anzahl der Elemente, die vom Anfang der zugrunde liegenden Ansicht entnommen werden sollen. Wenn count
die Anzahl der Elemente in der zugrunde liegenden Ansicht größer ist, enthält die Ansicht alle Elemente im zugrunde liegenden Bereich.
Informationen zum Vorlagenparametertyp finden Sie unter Vorlagenparameter.
Rückgabewert
A take_view
, bei dem es sich um eine Ansicht der ersten N-Elemente aus einer anderen Ansicht handelt. Wenn Sie mehr Elemente angeben, die abzulegen sind, als im zugrunde liegenden Bereich vorhanden sind, wird ein empty_view
Wert zurückgegeben.
Hinweise
Die beste Methode zum Erstellen eines Steuerelements take_view
ist die Verwendung des views::take
Bereichsadapters. Bereichsadapter sind die beabsichtigte Möglichkeit zum Erstellen von Ansichtsklassen. Die Ansichtstypen werden nur für den Fall verfügbar gemacht, dass Sie ihren eigenen benutzerdefinierten Ansichtstyp erstellen möchten.
1) Erstellen Sie ein take_view
Element ohne Elemente. Die zugrunde liegende Ansicht wird standardmäßig erstellt. base()
gibt eine Kopie von V()
.
2) Erstellen sie eine take_view
aus einer base
und einer Anzahl. base
wird verschoben über std::move()
.
Wenn count
die Anzahl der Elemente im zugrunde liegenden Bereich kleiner ist, wird die count
Größe der take_view
.
Wenn count
die Anzahl der Elemente im zugrunde liegenden Bereich größer ist, enthält dies take_view
alle Elemente im zugrunde liegenden Bereich.
Beispiel: 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
Ruft eine Kopie der zugrunde liegenden Ansicht ab.
// 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() &&;
Parameter
Keine
Rückgabewert
Die zugrunde liegende Ansicht.
begin
Rufen Sie einen Iterator zum ersten Element in der Ansicht ab.
constexpr auto begin() requires (!Simple_view<V>);
constexpr auto begin() const requires range<const V>;
Parameter
Keine
Rückgabewert
Ein Iterator, der auf das erste Element in der Ansicht zeigt.
Hinweise
Für 1 bedeutet die Simple_view<V>
Anforderung, dass die Ansicht V
und const V
die gleichen Iterator- und Sentineltypen aufweisen müssen.
end
Rufen Sie den Sentinel am Ende der Ansicht ab.
1) constexpr auto end() requires !(Simple_view<V>);
2) constexpr auto end() const requires range<const V>;
Parameter
Keine
Rückgabewert
Der Sentinel, der auf das letzte Element in der Ansicht folgt.
Hinweise
Für 1 bedeutet die Simple_view<V>
Anforderung, dass die Ansicht V
und const V
die gleichen Iterator- und Sentineltypen aufweisen müssen.
size
Ruft die Anzahl der Elemente ab.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
Parameter
Keine
Rückgabewert
Die Anzahl der Elemente im take_view
.
Wenn die take_view
Konstruktion mit einem expliziten count
:
- wenn
count
die Anzahl der Elemente im zugrunde liegenden Bereich kleiner ist, wird sie als Größe der Ansicht zurückgegeben. - wenn
count
die Anzahl der Elemente im zugrunde liegenden Bereich größer istranges::size(base)
, ist die Größe der Ansicht .