Experimental library header <experimental/ranges/iterator>
From cppreference.net
<
cpp
|
header
|
experimental
Dieser Header ist Teil der ranges -Bibliothek.
Inhaltsverzeichnis |
|
Definiert in Namespace
std::experimental::ranges
|
Iterator-Konzepte
spezifiziert, dass ein Typ durch Anwendung des Operators
*
lesbar ist
(Konzept) |
|
|
spezifiziert, dass ein Wert in das referenzierte Objekt eines Iterators geschrieben werden kann
(Konzept) |
|
spezifiziert, dass ein
Semiregular
Typ mit Prä- und Post-Inkrementoperatoren inkrementiert werden kann
(Konzept) |
|
spezifiziert, dass die Inkrementoperation auf einem
WeaklyIncrementable
Typ gleichheitserhaltend ist und dass der Typ
EqualityComparable
ist
(Konzept) |
|
|
spezifiziert, dass Objekte eines Typs inkrementiert und dereferenziert werden können
(Konzept) |
|
spezifiziert, dass Objekte eines Typs ein Sentinel für einen
Iterator
Typ sind
(Konzept) |
|
spezifiziert, dass der
-
Operator auf einen Iterator und einen Sentinel angewendet werden kann, um ihre Differenz in konstanter Zeit zu berechnen
(Konzept) |
|
|
spezifiziert, dass ein Typ ein Eingabeiterator ist, d.h. seine referenzierten Werte können gelesen werden und er kann sowohl prä- als auch post-inkrementiert werden
(Konzept) |
|
|
spezifiziert, dass ein Typ ein Ausgabeiterator für einen gegebenen Werttyp ist, d.h. Werte dieses Typs können in ihn geschrieben werden und er kann sowohl prä- als auch post-inkrementiert werden
(Konzept) |
|
spezifiziert, dass ein
InputIterator
ein Vorwärtsiterator ist, der Gleichheitsvergleiche und Mehrfachdurchläufe unterstützt
(Konzept) |
|
spezifiziert, dass ein
ForwardIterator
ein bidirektionaler Iterator ist, der Bewegung rückwärts unterstützt
(Konzept) |
|
spezifiziert, dass ein
BidirectionalIterator
ein wahlfreier Zugriffsiterator ist, der Fortbewegung in konstanter Zeit und Indizierung unterstützt
(Konzept) |
Indirekte aufrufbare Konzepte
spezifiziert, dass ein aufrufbarer Typ mit dem Ergebnis der Dereferenzierung eines
Readable
Typs aufgerufen werden kann
(Konzept) |
|
spezifiziert, dass ein aufrufbares Objekt, wenn es mit dem Ergebnis der Dereferenzierung eines
Readable
Typs aufgerufen wird,
Predicate
erfüllt
(Konzept) |
|
spezifiziert, dass ein aufrufbares Objekt, wenn es mit dem Ergebnis der Dereferenzierung einiger
Readable
Typen aufgerufen wird,
Relation
erfüllt
(Konzept) |
|
spezifiziert, dass ein aufrufbares Objekt, wenn es mit dem Ergebnis der Dereferenzierung einiger
Readable
Typen aufgerufen wird,
StrictWeakOrder
erfüllt
(Konzept) |
Allgemeine Algorithmusanforderungen
spezifiziert, dass Werte von einem
Readable
Typ zu einem
Writable
Typ verschoben werden können
(Konzept) |
|
spezifiziert, dass Werte von einem
Readable
Typ zu einem
Writable
Typ verschoben werden können und dass die Verschiebung über ein Zwischenobjekt erfolgen kann
(Konzept) |
|
spezifiziert, dass Werte von einem
Readable
Typ zu einem
Writable
Typ kopiert werden können
(Konzept) |
|
spezifiziert, dass Werte von einem
Readable
Typ zu einem
Writable
Typ kopiert werden können und dass die Kopie über ein Zwischenobjekt erfolgen kann
(Konzept) |
|
spezifiziert, dass die von zwei
Readable
Typen referenzierten Werte ausgetauscht werden können
(Konzept) |
|
spezifiziert, dass die von zwei
Readable
Typen referenzierten Werte verglichen werden können
(Konzept) |
|
|
spezifiziert die allgemeinen Anforderungen von Algorithmen, die Elemente an Ort und Stelle neu anordnen
(Konzept) |
|
|
spezifiziert die Anforderungen von Algorithmen, die sortierte Sequenzen durch Kopieren von Elementen in eine Ausgabesequenz zusammenführen
(Konzept) |
|
|
spezifiziert die allgemeinen Anforderungen von Algorithmen, die Sequenzen in geordnete Sequenzen umordnen
(Konzept) |
Konzept-Hilfsmittel
Berechnet das Ergebnis des Aufrufs eines aufrufbaren Objekts auf das Ergebnis der Dereferenzierung einiger
Readable
Typen
(Klassentemplate) |
|
|
Hilfstemplate zur Spezifikation der Constraints für Algorithmen, die Projektionen akzeptieren
(Klassentemplate) |
Iterator-Primitive
Iterator-Hilfsfunktionen
|
Definiert im Namespace
std::experimental::ranges
|
|
|
wandelt das Ergebnis der Dereferenzierung eines Objekts in seinen zugehörigen Rvalue-Referenztyp um
(Anpassungspunktobjekt) |
|
|
tauscht die von zwei dereferenzierbaren Objekten referenzierten Werte
(Anpassungspunktobjekt) |
|
Iterator-Eigenschaften
|
Definiert im Namespace
std::experimental::ranges
|
|
ermittelt den Differenztyp eines
WeaklyIncrementable
Typs
(Klassentemplate) |
|
ermittelt den Werttyp eines
Readable
Typs
(Klassentemplate) |
|
|
ermittelt die Iteratorkategorie eines Input-Iterator-Typs
(Klassentemplate) |
|
|
Kompatibilitäts-Traits-Klasse, die die assoziierten Typen eines Iterators sammelt
(Alias-Template) |
|
|
ermittelt die assoziierten Referenztypen eines dereferenzierbaren Objekts
(Alias-Template) |
|
Iterator-Kategorie-Tags
|
Definiert im Namespace
std::experimental::ranges
|
|
|
Leere Klassentypen, die zur Kennzeichnung von Iterator-Kategorien verwendet werden
(Klasse) |
|
std::iterator_traits Spezialisierungen
|
Definiert im Namespace
std
|
|
|
spezialisiert
std::iterator_traits
für Ranges TS-Iteratoren
(Klassen-Template-Spezialisierung) |
|
Iterator-Operationen
|
Definiert im Namespace
std::experimental::ranges
|
|
|
bewegt einen Iterator um eine gegebene Distanz
(Funktions-Template) |
|
|
gibt die Distanz zwischen einem Iterator und einem Sentinel zurück, oder zwischen dem Anfang und dem Ende eines Bereichs
(Funktions-Template) |
|
|
erhöht einen Iterator
(Funktions-Template) |
|
|
verringert einen Iterator
(Funktions-Template) |
|
Iterator-Adapter
|
Definiert im Namespace
std::experimental::ranges
|
|
|
Iterator-Adapter für die Traversierung in umgekehrter Reihenfolge
(Klassentemplate) |
|
|
Iterator-Adapter für das Einfügen am Ende eines Containers
(Klassentemplate) |
|
|
Iterator-Adapter für das Einfügen am Anfang eines Containers
(Klassentemplate) |
|
|
Iterator-Adapter für das Einfügen in einen Container
(Klassentemplate) |
|
|
Iterator-Adapter, der zu einer Rvalue-Referenz dereferenziert
(Klassentemplate) |
|
Sentinel-Adapter zur Verwendung mit
move_iterator
(Klassentemplate) |
|
|
Passt ein Iterator-Sentinel-Paar an einen gemeinsamen Iteratortyp für die Verwendung mit Legacy-Algorithmen an
(Klassentemplate) |
|
|
Iterator-Adapter, der den Abstand von seiner Startposition verfolgt
(Klassentemplate) |
|
|
Leerer Sentinel-Typ für die Verwendung mit Iteratortypen, die die Grenze ihres Bereichs kennen
(Klasse) |
|
|
Wrapper für einen möglicherweise hängenden Iterator
(Klassentemplate) |
|
Alias-Template, das den Iteratortyp eines Rvalue-Bereichs mit
dangling
umschließt
(Alias-Template) |
|
|
Sentinel-Typ, der mit jedem Iterator verwendet wird, um einen unendlichen Bereich zu bezeichnen
(Klasse) |
|
Stream-Iteratoren
|
Definiert im Namensraum
std::experimental::ranges
|
|
|
Eingabe-Iterator, der aus
std::basic_istream
liest
(Klassentemplate) |
|
|
Ausgabe-Iterator, der in
std::basic_ostream
schreibt
(Klassentemplate) |
|
|
Eingabe-Iterator, der aus
std::basic_streambuf
liest
(Klassentemplate) |
|
|
Ausgabe-Iterator, der in
std::basic_streambuf
schreibt
(Klassentemplate) |
|
Zusammenfassung
namespace std { namespace experimental { namespace ranges { inline namespace v1 { template <class T> concept bool /* dereferenceable */ // exposition only = requires(T& t) { {*t} -> auto&&; }; namespace { constexpr /* nicht spezifiziert */ iter_move = /* nicht spezifiziert */; constexpr /* nicht spezifiziert */ iter_swap = /* nicht spezifiziert */; } template <class> struct difference_type; template <class T> using difference_type_t = typename difference_type<T>::type; template <class> struct value_type; template <class T> using value_type_t = typename value_type<T>::type; template <class> struct iterator_category; template <class T> using iterator_category_t = typename iterator_category<T>::type; template </* dereferenzierbar */ T> using reference_t = decltype(*declval<T&>()); template </* dereferenceable */ T> requires /* siehe Definition */ using rvalue_reference_t = decltype(ranges::iter_move(declval<T&>())); template <class In> concept bool Readable = /* siehe Definition */; template <class Out, class T> concept bool Writable = /* siehe Definition */; template <class I> concept bool WeaklyIncrementable = /* siehe Definition */; template <class I> concept bool Incrementable = /* siehe Definition */; template <class I> concept bool Iterator = /* siehe Definition */; template <class S, class I> concept bool Sentinel = /* siehe Definition */; template <class S, class I> constexpr bool disable_sized_sentinel = false; template <class S, class I> concept bool SizedSentinel = /* siehe Definition */; template <class I> concept bool InputIterator = /* siehe Definition */; template <class I> concept bool OutputIterator = /* siehe Definition */; template <class I> concept bool ForwardIterator = /* siehe Definition */; template <class I> concept bool BidirectionalIterator = /* siehe Definition */; template <class I> concept bool RandomAccessIterator = /* siehe Definition */; template <class F, class I> concept bool IndirectUnaryInvocable = /* siehe Definition */; template <class F, class I> concept bool IndirectRegularUnaryInvocable = /* siehe Definition */; template <class F, class I> concept bool IndirectUnaryPredicate = /* siehe Definition */; template <class F, class I1, class I2 = I1> concept bool IndirectRelation = /* siehe Definition */; template <class F, class I1, class I2 = I1> concept bool IndirectStrictWeakOrder = /* siehe Definition */; template <class> struct indirect_result_of; template <class F, class... Ist> requires Invocable<F, reference_t<Is>...> struct indirect_result_of<F(Is...)>; template <class F> using indirect_result_of_t = typename indirect_result_of<F>::type; template <Readable I, IndirectRegularUnaryInvocable<I> Proj> struct projected; template <WeaklyIncrementable I, class Proj> struct difference_type<projected<I, Proj>>; template <class In, class Out> concept bool IndirectlyMovable = /* siehe Definition */; template <class In, class Out> concept bool IndirectlyMovableStorable = /* siehe Definition */; template <class In, class Out> concept bool IndirectlyCopyable = /* siehe Definition */; template <class In, class Out> concept bool IndirectlyCopyableStorable = /* siehe Definition */; template <class I1, class I2 = I1> concept bool IndirectlySwappable = /* siehe Definition */; template <class I1, class I2, class R = equal_to<>, class P1 = identity, class P2 = identity> concept bool IndirectlyComparable = /* siehe Definition */; template <class I> concept bool Permutable = /* siehe Definition */; template <class I1, class I2, class Out, class R = less<>, class P1 = identity, class P2 = identity> concept bool Mergeable = /* siehe Definition */; template <class I, class R = less<>, class P = identity> concept bool Sortable = /* siehe Definition */; template <class Iterator> using iterator_traits = /* siehe Definition */; template <Readable T> using iter_common_reference_t = common_reference_t<reference_t<T>, value_type_t<T>&>; struct output_iterator_tag { }; struct input_iterator_tag { }; struct forward_iterator_tag : input_iterator_tag { }; struct bidirectional_iterator_tag : forward_iterator_tag { }; struct random_access_iterator_tag : bidirectional_iterator_tag { }; namespace { constexpr /* nicht spezifiziert */ advance = /* nicht spezifiziert */; constexpr /* nicht spezifiziert */ distance = /* nicht spezifiziert */; constexpr /* nicht spezifiziert */ next = /* nicht spezifiziert */; constexpr /* nicht spezifiziert */ prev = /* nicht spezifiziert */; } template <BidirectionalIterator I> class reverse_iterator; template <class I1, class I2> requires EqualityComparableWith<I1, I2> constexpr bool operator==( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <class I1, class I2> requires EqualityComparableWith<I1, I2> constexpr bool operator!=( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator<( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator>( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator>=( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator<=( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <class I1, class I2> requires SizedSentinel<I1, I2> constexpr difference_type_t<I2> operator-( const reverse_iterator<I1>& x, const reverse_iterator<I2>& y); template <RandomAccessIterator I> constexpr reverse_iterator<I> operator+( difference_type_t<I> n, const reverse_iterator<I>& x); template <BidirectionalIterator I> constexpr reverse_iterator<I> make_reverse_iterator(I i); template <class Container> class back_insert_iterator; template <class Container> back_insert_iterator<Container> back_inserter(Container& x); template <class Container> class front_insert_iterator; template <class Container> front_insert_iterator<Container> front_inserter(Container& x); template <class Container> class insert_iterator; template <class Container> insert_iterator<Container> inserter(Container& x, iterator_t<Container> i); template <InputIterator I> class move_iterator; template <class I1, class I2> requires EqualityComparableWith<I1, I2> constexpr bool operator==( const move_iterator<I1>& x, const move_iterator<I2>& y); template <class I1, class I2> requires EqualityComparableWith<I1, I2> constexpr bool operator!=( const move_iterator<I1>& x, const move_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator<( const move_iterator<I1>& x, const move_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator<=( const move_iterator<I1>& x, const move_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator>( const move_iterator<I1>& x, const move_iterator<I2>& y); template <class I1, class I2> requires StrictTotallyOrderedWith<I1, I2> constexpr bool operator>=( const move_iterator<I1>& x, const move_iterator<I2>& y); template <class I1, class I2> requires SizedSentinel<I1, I2> constexpr difference_type_t<I2> operator-( const move_iterator<I1>& x, const move_iterator<I2>& y); template <RandomAccessIterator I> constexpr move_iterator<I> operator+( difference_type_t<I> n, const move_iterator<I>& x); template <InputIterator I> constexpr move_iterator<I> make_move_iterator(I i); template <Semiregular S> class move_sentinel; template <class I, Sentinel<I> S> constexpr bool operator==( const move_iterator<I>& i, const move_sentinel<S>& s); template <class I, Sentinel<I> S> constexpr bool operator==( const move_sentinel<S>& s, const move_iterator<I>& i); template <class I, Sentinel<I> S> constexpr bool operator!=( const move_iterator<I>& i, const move_sentinel<S>& s); template <class I, Sentinel<I> S> constexpr bool operator!=( const move_sentinel<S>& s, const move_iterator<I>& i); template <class I, SizedSentinel<I> S> constexpr difference_type_t<I> operator-( const move_sentinel<S>& s, const move_iterator<I>& i); template <class I, SizedSentinel<I> S> constexpr difference_type_t<I> operator-( const move_iterator<I>& i, const move_sentinel<S>& s); template <Semiregular S> constexpr move_sentinel<S> make_move_sentinel(S s); template <Iterator I, Sentinel<I> S> requires !Same<I, S> class common_iterator; template <Readable I, class S> struct value_type<common_iterator<I, S>>; template <InputIterator I, class S> struct iterator_category<common_iterator<I, S>>; template <ForwardIterator I, class S> struct iterator_category<common_iterator<I, S>>; template <class I1, class I2, Sentinel<I2> S1, Sentinel<I1> S2> bool operator==( const common_iterator<I1, S1>& x, const common_iterator<I2, S2>& y); template <class I1, class I2, Sentinel<I2> S1, Sentinel<I1> S2> requires EqualityComparableWith<I1, I2> bool operator==( const common_iterator<I1, S1>& x, const common_iterator<I2, S2>& y); template <class I1, class I2, Sentinel<I2> S1, Sentinel<I1> S2> bool operator!=( const common_iterator<I1, S1>& x, const common_iterator<I2, S2>& y); template <class I2, SizedSentinel<I2> I1, SizedSentinel<I2> S1, SizedSentinel<I1> S2> difference_type_t<I2> operator-( const common_iterator<I1, S1>& x, const common_iterator<I2, S2>& y); class default_sentinel; template <Iterator I> class counted_iterator; template <class I1, class I2> requires Common<I1, I2> constexpr bool operator==( const counted_iterator<I1>& x, const counted_iterator<I2>& y); constexpr bool operator==( const counted_iterator<auto>& x, default_sentinel); constexpr bool operator==( default_sentinel, const counted_iterator<auto>& x); template <class I1, class I2> requires Common<I1, I2> constexpr bool operator!=( const counted_iterator<I1>& x, const counted_iterator<I2>& y); constexpr bool operator!=( const counted_iterator<auto>& x, default_sentinel y); constexpr bool operator!=( default_sentinel x, const counted_iterator<auto>& y); template <class I1, class I2> requires Common<I1, I2> constexpr bool operator<( const counted_iterator<I1>& x, const counted_iterator<I2>& y); template <class I1, class I2> requires Common<I1, I2> constexpr bool operator<=( const counted_iterator<I1>& x, const counted_iterator<I2>& y); template <class I1, class I2> requires Common<I1, I2> constexpr bool operator>( const counted_iterator<I1>& x, const counted_iterator<I2>& y); template <class I1, class I2> requires Common<I1, I2> constexpr bool operator>=( const counted_iterator<I1>& x, const counted_iterator<I2>& y); template <class I1, class I2> requires Common<I1, I2> constexpr difference_type_t<I2> operator-( const counted_iterator<I1>& x, const counted_iterator<I2>& y); template <class I> constexpr difference_type_t<I> operator-( const counted_iterator<I>& x, default_sentinel y); template <class I> constexpr difference_type_t<I> operator-( default_sentinel x, const counted_iterator<I>& y); template <RandomAccessIterator I> constexpr counted_iterator<I> operator+(difference_type_t<I> n, const counted_iterator<I>& x); template <Iterator I> constexpr counted_iterator<I> make_counted_iterator(I i, difference_type_t<I> n); class unreachable; template <Iterator I> constexpr bool operator==(const I&, unreachable) noexcept; template <Iterator I> constexpr bool operator==(unreachable, const I&) noexcept; template <Iterator I> constexpr bool operator!=(const I&, unreachable) noexcept; template <Iterator I> constexpr bool operator!=(unreachable, const I&) noexcept; template <class T> class dangling; template <class T, class CharT = char, class Traits = char_traits<CharT>, class Distance = ptrdiff_t> class istream_iterator; template <class T, class CharT, class Traits, class Distance> bool operator==(const istream_iterator<T, CharT, Traits, Distance>& x, const istream_iterator<T, CharT, Traits, Distance>& y); template <class T, class CharT, class Traits, class Distance> bool operator==(default_sentinel x, const istream_iterator<T, CharT, Traits, Distance>& y); template <class T, class CharT, class Traits, class Distance> bool operator==(const istream_iterator<T, CharT, Traits, Distance>& x, default_sentinel y); template <class T, class CharT, class Traits, class Distance> bool operator!=(const istream_iterator<T, CharT, Traits, Distance>& x, const istream_iterator<T, CharT, Traits, Distance>& y); template <class T, class CharT, class Traits, class Distance> bool operator!=(default_sentinel x, const istream_iterator<T, CharT, Traits, Distance>& y); template <class T, class CharT, class Traits, class Distance> bool operator!=(const istream_iterator<T, CharT, Traits, Distance>& x, default_sentinel y); template <class T, class CharT = char, class Traits = char_traits<CharT>> class ostream_iterator; template <class CharT, class Traits = char_traits<CharT> > class istreambuf_iterator; template <class CharT, class Traits> bool operator==(const istreambuf_iterator<CharT, Traits>& a, const istreambuf_iterator<CharT, Traits>& b); template <class CharT, class Traits> bool operator==(default_sentinel a, const istreambuf_iterator<CharT, Traits>& b); template <class CharT, class Traits> bool operator==(const istreambuf_iterator<CharT, Traits>& a, default_sentinel b); template <class CharT, class Traits> bool operator!=(const istreambuf_iterator<CharT, Traits>& a, const istreambuf_iterator<CharT, Traits>& b); template <class CharT, class Traits> bool operator!=(default_sentinel a, const istreambuf_iterator<CharT, Traits>& b); template <class CharT, class Traits> bool operator!=(const istreambuf_iterator<CharT, Traits>& a, default_sentinel b); template <class CharT, class Traits = char_traits<CharT> > class ostreambuf_iterator; }}}} namespace std { template <experimental::ranges::Iterator Out> struct iterator_traits<Out>; template <experimental::ranges::InputIterator In> struct iterator_traits<In>; template <experimental::ranges::InputIterator In> requires experimental::ranges::Sentinel<In, In> struct iterator_traits; }