Namespaces
Variants

nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator

De fr.cppreference.net
 
 
Bibliothèque d'algorithmes
Algorithmes contraints et algorithmes sur plages (C++20)
Algorithmes contraints, p.ex. ranges::copy, ranges::sort, ...
Opérations de séquence non modificatrices    
Opérations par lots
(C++17)
Opérations de recherche
Opérations de séquence modificatrices
Opérations de copie
(C++11)
(C++11)
Opérations d'échange
Opérations de transformation
Opérations de génération
Opérations de suppression
Opérations de changement d'ordre
(jusqu'à C++17)(C++11)
(C++20)(C++20)
Opérations d'échantillonnage
(C++17)

Opérations de tri et connexes
Opérations de partitionnement
(C++11)    

Opérations de tri
Opérations de recherche binaire
(sur plages partitionnées)
Opérations d'ensemble (sur plages triées)
Opérations de fusion (sur plages triées)
Opérations de tas
Opérations de minimum/maximum
(C++11)
(C++17)
Opérations de comparaison lexicographique
Opérations de permutation


 
 
template< class I >
concept /*nothrow-input-iterator*/ =
    std::input_iterator<I> &&
    std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
    std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>,
                 std::iter_value_t<I>>;
(1) (exposition uniquement*)
template< class I >
concept /*nothrow-forward-iterator*/ =
    /*nothrow-input-iterator*/<I> &&
    std::forward_iterator<I> &&
    /*nothrow-sentinel-for*/<I, I>;
(2) (exposition uniquement*)
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
    /*nothrow-forward-iterator*/<I> &&
    std::bidirectional_iterator<I>;
(3) (depuis C++26)
(exposition uniquement*)
template< class I >
concept /*nothrow-random-access-iterator*/ =
    /*nothrow-bidirectional-iterator*/<I> &&
    std::random_access_iterator<I> &&
    /*nothrow-sized-sentinel-for*/<I, I>;
(4) (depuis C++26)
(exposition uniquement*)

Ces concepts d'exposition uniquement spécifient qu'aucune exception n'est levée par les opérations requises par les algorithmes <memory> spécialisés sur les itérateurs.

Pour les définitions de /*nothrow-sentinel-for*/ et /*nothrow-sized-sentinel-for*/, voir cette page.

Exigences sémantiques

1) Un type I modélise nothrow-input-iterator uniquement si aucune exception n'est levée lors de l'incrémentation, de la construction par copie, de la construction par déplacement, de l'affectation par copie, de l'affectation par déplacement ou du déréférencement d'itérateurs valides de type I.
3) Un type I modélise nothrow-bidirectional-iterator uniquement si aucune exception n'est levée lors de la décrémentation d'itérateurs valides de type I.
4) Un type I modélise nothrow-random-access-iterator uniquement si aucune exception n'est levée lors des comparaisons d'itérateurs valides de type I, ou des opérateurs -, +, -=, +=, [] sur des valeurs valides de type I et std::iter_difference_t<I>.

Notes

Ces concepts autorisent certaines opérations sur les itérateurs à lever des exceptions.

Voir aussi

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é- et post-incrémenté
(concept)
spécifie qu'un input_iterator est un itérateur avant, prenant en charge la comparaison d'égalité et le multi-passage
(concept)
spécifie qu'un forward_iterator est un itérateur bidirectionnel, prenant en charge le déplacement vers l'arrière
(concept)
spécifie qu'un bidirectional_iterator est un itérateur à accès aléatoire, prenant en charge l'avancement en temps constant et l'indiçage
(concept)