std::experimental::ranges:: Iterator
| Technical Specification | ||||
| Filesystem library (filesystem TS) | ||||
| Library fundamentals (library fundamentals TS) | ||||
| Library fundamentals 2 (library fundamentals TS v2) | ||||
| Library fundamentals 3 (library fundamentals TS v3) | ||||
| Extensions for parallelism (parallelism TS) | ||||
| Extensions for parallelism 2 (parallelism TS v2) | ||||
| Extensions for concurrency (concurrency TS) | ||||
| Extensions for concurrency 2 (concurrency TS v2) | ||||
| Concepts (concepts TS) | ||||
| Ranges (ranges TS) | ||||
| Reflection (reflection TS) | ||||
| Mathematical special functions (special functions TR) | ||||
| Experimental Non-TS | ||||
| Pattern Matching | ||||
| Linear Algebra | ||||
| std::execution | ||||
| Contracts | ||||
| 2D Graphics |
| Iterator concepts | |||||||||||||||||||||||
|
|||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||
| Concept utilities | |||||||||||||||||||||||
| Iterator utilities and operations | |||||||||||||||||||||||
| Iterator traits | |||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||
| Stream iterators | |||||||||||||||||||||||
|
Definiert im Header
<experimental/ranges/iterator>
|
||
|
template
<
class
I
>
concept
bool
Iterator
=
|
(ranges TS) | |
Das
Iterator
-Konzept bildet die Grundlage der Iterator-Konzept-Taxonomie; jeder Iterator erfüllt die
Iterator
-Anforderungen.
Gleichheitserhaltung
Ein Ausdruck ist equality preserving , wenn er bei gleichen Eingaben gleiche Ausgaben liefert.
- Die Eingaben eines Ausdrucks bestehen aus seinen Operanden.
- Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen durch den Ausdruck modifizierten Operanden (falls vorhanden).
Jeder Ausdruck, der gleichungserhaltend sein muss, muss darüber hinaus stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen gleiche Ausgaben liefern, sofern keine explizite Änderung dieser Eingabeobjekte zwischen den Auswertungen erfolgt.
Sofern nicht anders angegeben, muss jeder Ausdruck, der in einem requires-expression verwendet wird, gleichheitserhaltend und stabil sein, und die Auswertung des Ausdrucks darf nur seine nicht-konstanten Operanden modifizieren. Operanden, die konstant sind, dürfen nicht modifiziert werden.
Hinweise
Iterator
selbst spezifiziert nur Operationen zum Dereferenzieren und Inkrementieren eines Iterators. Die meisten Algorithmen werden zusätzliche Operationen benötigen, zum Beispiel:
-
Vergleichen von Iteratoren mit Sentinels (siehe
Sentinel); -
Lesen von Werten aus einem Iterator (siehe
ReadableundInputIterator); -
Schreiben von Werten in einen Iterator (siehe
WritableundOutputIterator); -
eine erweiterte Palette von Iterator-Bewegungen (siehe
ForwardIterator,BidirectionalIterator,RandomAccessIterator).
Die - > auto && -Einschränkung impliziert, dass der Ergebnistyp der Dereferenzierung nicht void sein kann.