std::ranges::views:: counted
|
Definiert im Header
<ranges>
|
||
|
inline
constexpr
/*unspecified*/
counted
=
/*unspecified*/
;
|
(seit C++20) | |
|
Aufrufsignatur
|
||
|
template
<
class
Iterator,
class
DifferenceType
>
requires
/* see below */
|
(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
Tdie Konzepteinput_or_output_iteratorund decltype ( ( count ) ) die Konzepte std:: convertible_to < D > modelliert,-
falls
Tdas Konzeptcontiguous_iteratormodelliert, dann ist views:: counted ( it, count ) ausdrucksäquivalent zu std:: span ( std:: to_address ( it ) , static_cast < std:: size_t > ( static_cast < D > ( count ) ) ) , -
andernfalls, falls
Tdas Konzeptrandom_access_iteratormodelliert, dann ist views:: counted ( it, count ) ausdrucksäquivalent zu ranges:: subrange ( it, it + static_cast < D > ( count ) ) , - andernfalls ist views:: counted ( it, count ) ausdrucksäquivalent zu ranges:: subrange ( std:: counted_iterator ( it, count ) , std:: default_sentinel ) .
-
falls
- 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
|
(C++20)
|
eine
view
bestehend aus den ersten N Elementen einer anderen
view
(Klassentemplate) (Range-Adapter-Objekt) |
|
(C++20)
|
kombiniert ein Iterator-Sentinel-Paar zu einer
view
(Klassentemplate) |
|
(C++20)
|
Iterator-Adapter, der den Abstand zum Ende der Range verfolgt
(Klassentemplate) |
|
(C++20)
(C++20)
|
gibt die Anzahl der Elemente zurück, die spezifische Kriterien erfüllen
(Algorithmus-Funktionsobjekt) |