Namespaces
Variants

std::ranges::views:: counted

From cppreference.net
Ranges library
Range adaptors
Definiert im Header <ranges>
inline constexpr /*unspecified*/ counted = /*unspecified*/ ;
(seit C++20)
Aufrufsignatur
template < class Iterator, class DifferenceType >

requires /* see below */

constexpr /*span-or-subrange*/ counted ( Iterator && it, DifferenceType && count ) ;
(seit C++20)

Eine gezählte Ansicht stellt eine view der Elemente des gezählten Bereichs [ i , n ) für einen Iterator i und eine nicht-negative Ganzzahl n dar.

Ein gezählter Bereich [ i , n ) sind die n Elemente, beginnend mit dem durch i referenzierten Element bis zu, aber nicht einschließlich des Elements, falls vorhanden, auf das durch das Ergebnis von n Anwendungen von ++ i referenziert wird.

Wenn n == 0 , ist der gezählte Bereich gültig und leer. Andernfalls ist der gezählte Bereich nur gültig, wenn n positiv ist, i dereferenzierbar ist und [ ++ i , -- n ) ein gültiger gezählter Bereich ist.

Formal, wenn it und count Ausdrücke sind, T gleich std:: decay_t < decltype ( ( it ) ) > ist, und D gleich std:: iter_difference_t < T > ist, dann

falls T die Konzepte input_or_output_iterator und decltype ( ( count ) ) die Konzepte std:: convertible_to < D > modelliert,
Andernfalls ist views:: counted ( it, count ) fehlerhaft.

Inhaltsverzeichnis

Customization Point Objects

Der Name views::counted bezeichnet ein Customization Point Object , welches ein konstantes Function Object eines Literal semiregular -Klassentyps ist. Weitere Details finden Sie unter CustomizationPointObject .

Hinweise

views::counted überprüft nicht, ob der Bereich lang genug ist, um alle count Elemente bereitzustellen: verwenden Sie views:: take falls diese Überprüfung notwendig ist.

Beispiel

#include <iostream>
#include <ranges>
int main()
{
    const int a[]{1, 2, 3, 4, 5, 6, 7};
    for (int i : std::views::counted(a, 3))
        std::cout << i << ' ';
    std::cout << '\n';
    const auto il = {1, 2, 3, 4, 5};
    for (int i : std::views::counted(il.begin() + 1, 3))
        std::cout << i << ' ';
    std::cout << '\n';
}

Ausgabe:

1 2 3
2 3 4

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
P2393R1 C++20 implizite Konvertierung von einem Integer-Class-Typ zu std:: size_t könnte ungültig sein explizit gemacht

Siehe auch

eine view bestehend aus den ersten N Elementen einer anderen view
(Klassentemplate) (Range-Adapter-Objekt)
kombiniert ein Iterator-Sentinel-Paar zu einer view
(Klassentemplate)
Iterator-Adapter, der den Abstand zum Ende der Range verfolgt
(Klassentemplate)
gibt die Anzahl der Elemente zurück, die spezifische Kriterien erfüllen
(Algorithmus-Funktionsobjekt)