std::input_iterator
| Definiert in Header <iterator> |
||
| template< class I > concept input_iterator = |
(seit C++20) | |
Das Konzept input_iterator ist eine Verfeinerung von input_or_output_iterator. Es fügt die Anforderung hinzu, dass die referenzierten Werte gelesen werden können (über indirectly_readable) und dass das Iterator-Konzept-Tag vorhanden ist.
Inhalt |
[bearbeiten] Bestimmung des Iterator-Konzepts
Die Definition dieses Konzepts wird über ein expositions-only-Alias-Template /*ITER_CONCEPT*/ spezifiziert.
Um /*ITER_CONCEPT*/<I> zu bestimmen, sei ITER_TRAITS<I> eine Bezeichnung für /*ITER_TRAITS*/, wenn die Spezialisierung std::iterator_traits<I> aus der primären Vorlage generiert wird, oder std::iterator_traits<I> andernfalls.
- Wenn ITER_TRAITS<I>::iterator_concept gültig ist und einen Typ benennt, bezeichnet /*ITER_CONCEPT*/<I> diesen Typ.
- Andernfalls, wenn ITER_TRAITS<I>::iterator_category gültig ist und einen Typ benennt, bezeichnet /*ITER_CONCEPT*/<I> diesen Typ.
- Andernfalls, wenn std::iterator_traits<I> aus der primären Vorlage generiert wird, bezeichnet /*ITER_CONCEPT*/<I> std::random_access_iterator_tag.
- Andernfalls bezeichnet /*ITER_CONCEPT*/<I> keinen Typ und führt zu einem Substitutionsfehler.
[bearbeiten] Anmerkungen
Im Gegensatz zu den LegacyInputIterator-Anforderungen erfordert das Konzept input_iterator keine equality_comparable-Fähigkeit, da Eingabe-Iteratoren typischerweise mit Sentinels verglichen werden.
[bearbeiten] Beispiel
Ein minimaler Eingabe-Iterator.
#include <cstddef> #include <iterator> struct SimpleInputIterator { using difference_type = std::ptrdiff_t; using value_type = int; int operator*() const; SimpleInputIterator& operator++(); void operator++(int) { ++*this; } }; static_assert(std::input_iterator<SimpleInputIterator>);
[bearbeiten] Siehe auch
| (C++20) |
spezifiziert, dass Objekte eines Typs inkrementiert und dereferenziert werden können (Konzept) |
| (C++20) |
gibt an, dass ein input_iterator ein Forward-Iterator ist, der Gleichheitsvergleiche und Mehrfachdurchläufe unterstützt(Konzept) |