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.
baseC++20 Rufen Sie den zugrunde liegenden Bereich ab.
beginC++20 Rufen Sie einen Iterator zum ersten Element ab.
endC++20 Rufen Sie den Sentinel am Ende der Ansicht ab.
sizeC++20 Ruft die Anzahl der Elemente ab. Der zugrunde liegende Bereich muss erfüllt sein sized_range.
Geerbt von view_interface Beschreibung
backC++20 Rufen Sie das letzte Element ab.
dataC++20 Rufen Sie einen Zeiger auf das erste Element ab.
emptyC++20 Testen Sie, ob die Ansicht leer ist.
frontC++20 Rufen Sie das erste Element ab.
operator[]C++20 Rufen Sie das Element an der angegebenen Position ab.
operator boolC++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.

Abbildung eines Vektors mit den Elementen 10, 20 und 30. Das erste Element enthält 10 und ist mit

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.

Abbildung eines Vektors mit den Elementen 10, 20 und 30. Das erste Element enthält 10 und ist mit

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 ist ranges::size(base), ist die Größe der Ansicht .

Siehe auch

<ranges>
take Range Adaptor
Anzeigen von Klassen