Experimental library header <experimental/ranges/iterator>
From cppreference.net
<
cpp
|
header
|
experimental
Cet en-tête fait partie de la bibliothèque ranges .
Table des matières |
|
Défini dans l'espace de noms
std::experimental::ranges
|
Concepts des itérateurs
spécifie qu'un type est lisible en appliquant l'opérateur
*
(concept) |
|
|
spécifie qu'une valeur peut être écrite dans l'objet référencé d'un itérateur
(concept) |
|
spécifie qu'un type
Semiregular
peut être incrémenté avec les opérateurs de pré-incrémentation et post-incrémentation
(concept) |
|
spécifie que l'opération d'incrémentation sur un type
WeaklyIncrementable
préserve l'égalité et que le type est
EqualityComparable
(concept) |
|
|
spécifie que les objets d'un type peuvent être incrémentés et déréférencés
(concept) |
|
spécifie que les objets d'un type sont des sentinelles pour un type
Iterator
(concept) |
|
spécifie que l'opérateur
-
peut être appliqué à un itérateur et une sentinelle pour calculer leur différence en temps constant
(concept) |
|
|
spécifie qu'un type est un itérateur d'entrée, c'est-à-dire que ses valeurs référencées peuvent être lues et qu'il peut être pré-incrémenté et post-incrémenté
(concept) |
|
|
spécifie qu'un type est un itérateur de sortie pour un type de valeur donné, c'est-à-dire que des valeurs de ce type peuvent y être écrites et qu'il peut être pré-incrémenté et post-incrémenté
(concept) |
|
spécifie qu'un
InputIterator
est un itérateur avant, supportant la comparaison d'égalité et le multi-passage
(concept) |
|
spécifie qu'un
ForwardIterator
est un itérateur bidirectionnel, supportant le déplacement vers l'arrière
(concept) |
|
spécifie qu'un
BidirectionalIterator
est un itérateur à accès aléatoire, supportant l'avancement en temps constant et l'indexation
(concept) |
Concepts d'appel indirect
spécifie qu'un type appelable peut être invoqué avec le résultat du déréférencement d'un
Readable
type
(concept) |
|
spécifie qu'un objet appelable, lorsqu'il est invoqué avec le résultat du déréférencement d'un
Readable
type, satisfait
Predicate
(concept) |
|
spécifie qu'un objet appelable, lorsqu'il est invoqué avec le résultat du déréférencement de certains
Readable
types, satisfait
Relation
(concept) |
|
spécifie qu'un objet appelable, lorsqu'il est invoqué avec le résultat du déréférencement de certains
Readable
types, satisfait
StrictWeakOrder
(concept) |
Exigences communes des algorithmes
spécifie que les valeurs peuvent être déplacées d'un
Readable
type vers un
Writable
type
(concept) |
|
spécifie que les valeurs peuvent être déplacées d'un
Readable
type vers un
Writable
type et que le déplacement peut être effectué via un objet intermédiaire
(concept) |
|
spécifie que les valeurs peuvent être copiées d'un
Readable
type vers un
Writable
type
(concept) |
|
spécifie que les valeurs peuvent être copiées d'un
Readable
type vers un
Writable
type et que la copie peut être effectuée via un objet intermédiaire
(concept) |
|
spécifie que les valeurs référencées par deux
Readable
types peuvent être échangées
(concept) |
|
spécifie que les valeurs référencées par deux
Readable
types peuvent être comparées
(concept) |
|
|
spécifie les exigences communes des algorithmes qui réorganisent les éléments en place
(concept) |
|
|
spécifie les exigences des algorithmes qui fusionnent des séquences triées en une séquence de sortie en copiant les éléments
(concept) |
|
|
spécifie les exigences communes des algorithmes qui réorganisent les séquences en séquences ordonnées
(concept) |
Utilitaires de concepts
calcule le résultat de l'invocation d'un objet appelable sur le résultat du déréférencement d'un ensemble de
Readable
types
(modèle de classe) |
|
|
modèle utilitaire pour spécifier les contraintes sur les algorithmes qui acceptent des projections
(modèle de classe) |
Primitives d'itérateur
Utilitaires d'itérateur
|
Défini dans l'espace de noms
std::experimental::ranges
|
|
|
convertit le résultat du déréférencement d'un objet en son type de référence rvalue associé
(objet point de personnalisation) |
|
|
échange les valeurs référencées par deux objets déréférençables
(objet point de personnalisation) |
|
Caractéristiques des itérateurs
|
Défini dans l'espace de noms
std::experimental::ranges
|
|
obtient le type de différence d'un type
WeaklyIncrementable
(modèle de classe) |
|
obtient le type de valeur d'un type
Readable
(modèle de classe) |
|
|
obtient la catégorie d'itérateur d'un type d'itérateur d'entrée
(modèle de classe) |
|
|
classe de traits de compatibilité qui collecte les types associés d'un itérateur
(modèle d'alias) |
|
|
obtient les types de référence associés d'un objet déréférençable
(modèle d'alias) |
|
Étiquettes de catégorie d'itérateur
|
Défini dans l'espace de noms
std::experimental::ranges
|
|
|
types de classes vides utilisés pour indiquer les catégories d'itérateurs
(classe) |
|
std::iterator_traits spécialisations
|
Défini dans l'espace de noms
std
|
|
|
spécialise
std::iterator_traits
pour les itérateurs du TS ranges
(spécialisation de modèle de classe) |
|
Opérations sur les itérateurs
|
Défini dans l'espace de noms
std::experimental::ranges
|
|
|
avance un itérateur d'une distance donnée
(modèle de fonction) |
|
|
retourne la distance entre un itérateur et un sentinelle, ou entre le début et la fin d'une plage
(modèle de fonction) |
|
|
incrémente un itérateur
(modèle de fonction) |
|
|
décrémente un itérateur
(modèle de fonction) |
|
Adaptateurs d'itérateurs
|
Défini dans l'espace de noms
std::experimental::ranges
|
|
|
adaptateur d'itérateur pour le parcours en ordre inverse
(modèle de classe) |
|
|
adaptateur d'itérateur pour l'insertion à la fin d'un conteneur
(modèle de classe) |
|
|
adaptateur d'itérateur pour l'insertion au début d'un conteneur
(modèle de classe) |
|
|
adaptateur d'itérateur pour l'insertion dans un conteneur
(modèle de classe) |
|
|
adaptateur d'itérateur qui déréférence vers une référence rvalue
(modèle de classe) |
|
adaptateur de sentinelle à utiliser avec
move_iterator
(modèle de classe) |
|
|
adapte une paire itérateur-sentinelle en un type d'itérateur commun pour utilisation avec les algorithmes hérités
(modèle de classe) |
|
|
adaptateur d'itérateur qui garde trace de sa distance depuis sa position de départ
(modèle de classe) |
|
|
type de sentinelle vide pour utilisation avec les types d'itérateurs qui connaissent la limite de leur plage
(classe) |
|
|
enveloppe pour un itérateur potentiellement suspendu
(modèle de classe) |
|
modèle d'alias qui enveloppe le type d'itérateur d'une plage rvalue avec
dangling
(modèle d'alias) |
|
|
type de sentinelle utilisé avec n'importe quel itérateur pour désigner une plage infinie
(classe) |
|
Itérateurs de flux
|
Défini dans l'espace de noms
std::experimental::ranges
|
|
|
itérateur d'entrée qui lit depuis
std::basic_istream
(modèle de classe) |
|
|
itérateur de sortie qui écrit vers
std::basic_ostream
(modèle de classe) |
|
|
itérateur d'entrée qui lit depuis
std::basic_streambuf
(modèle de classe) |
|
|
itérateur de sortie qui écrit vers
std::basic_streambuf
(modèle de classe) |
|
Synopsis
namespace std { namespace experimental { namespace ranges { inline namespace v1 { template <class T> concept bool /* déréférençable */ // exposition uniquement = requires(T& t) { {*t} -> auto&&; }; namespace { constexpr /* non spécifié */ iter_move = /* non spécifié */; constexpr /* non spécifié */ iter_swap = /* non spécifié */; } 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 </* déréférençable */ T> using reference_t = decltype(*declval<T&>()); template </* déréférençable */ T> requires /* voir définition */ using rvalue_reference_t = decltype(ranges::iter_move(declval<T&>())); template <class In> concept bool Readable = /* voir définition */; template <class Out, class T> concept bool Writable = /* voir définition */; template <class I> concept bool WeaklyIncrementable = /* voir définition */; template <class I> concept bool Incrementable = /* voir définition */; template <class I> concept bool Iterator = /* voir définition */; template <class S, class I> concept bool Sentinel = /* voir définition */; template <class S, class I> constexpr bool disable_sized_sentinel = false; template <class S, class I> concept bool SizedSentinel = /* voir définition */; template <class I> concept bool InputIterator = /* voir définition */; template <class I> concept bool OutputIterator = /* voir définition */; template <class I> concept bool ForwardIterator = /* voir définition */; template <class I> concept bool BidirectionalIterator = /* voir définition */; template <class I> concept bool RandomAccessIterator = /* voir définition */; template <class F, class I> concept bool IndirectUnaryInvocable = /* voir définition */; template <class F, class I> concept bool IndirectRegularUnaryInvocable = /* voir définition */; template <class F, class I> concept bool IndirectUnaryPredicate = /* voir définition */; template <class F, class I1, class I2 = I1> concept bool IndirectRelation = /* voir définition */; template <class F, class I1, class I2 = I1> concept bool IndirectStrictWeakOrder = /* voir définition */; template <class> struct indirect_result_of; template <class F, class... Est> 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 = /* voir définition */; template <class In, class Out> concept bool IndirectlyMovableStorable = /* voir définition */; template <class In, class Out> concept bool IndirectlyCopyable = /* voir définition */; template <class In, class Out> concept bool IndirectlyCopyableStorable = /* voir définition */; template <class I1, class I2 = I1> concept bool IndirectlySwappable = /* voir définition */; template <class I1, class I2, class R = equal_to<>, class P1 = identity, class P2 = identity> concept bool IndirectlyComparable = /* voir définition */; template <class I> concept bool Permutable = /* voir définition */; template <class I1, class I2, class Out, class R = less<>, class P1 = identity, class P2 = identity> concept bool Mergeable = /* voir définition */; template <class I, class R = less<>, class P = identity> concept bool Sortable = /* voir définition */; template <class Iterator> using iterator_traits = /* voir définition */; 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 /* non spécifié */ advance = /* non spécifié */; constexpr /* non spécifié */ distance = /* non spécifié */; constexpr /* non spécifié */ next = /* non spécifié */; constexpr /* non spécifié */ prev = /* non spécifié */; } 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::Sentinelle<In, In> struct iterator_traits; }