Namespaces
Variants

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

Von de.cppreference.net
 
 
Algorithmenbibliothek
Eingeschränkte Algorithmen und Algorithmen auf Bereichen (C++20)
Eingeschränkte Algorithmen, z. B. ranges::copy, ranges::sort, ...
Nicht modifizierende Sequenzoperationen    
Stapeloperationen
(C++17)
Suchoperationen
Modifizierende Sequenzoperationen
Kopieroperationen
(C++11)
(C++11)
Tauschoperationen
Transformationsoperationen
Erzeugungsoperationen
Entfernungsoperationen
Reihenfolgeändernde Operationen
(bis C++17)(C++11)
(C++20)(C++20)
Stichprobenoperationen
(C++17)

Sortierung und verwandte Operationen
Partitionierungsoperationen
(C++11)    

Sortierungsoperationen
Binäre Suchoperationen
(auf partitionierten Bereichen)
Mengenoperationen (auf sortierten Bereichen)
Mischoperationen (auf sortierten Bereichen)
Heap-Operationen
Minimum/Maximum-Operationen
(C++11)
(C++17)
Lexikografische Vergleichsoperationen
Permutationsoperationen


 
 
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) (nur zur Veranschaulichung*)
template< class I >
concept /*nothrow-forward-iterator*/ =
    /*nothrow-input-iterator*/<I> &&
    std::forward_iterator<I> &&
    /*nothrow-sentinel-for*/<I, I>;
(2) (nur zur Veranschaulichung*)
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
    /*nothrow-forward-iterator*/<I> &&
    std::bidirectional_iterator<I>;
(3) (seit C++26)
(nur zur Veranschaulichung*)
template< class I >
concept /*nothrow-random-access-iterator*/ =
    /*nothrow-bidirectional-iterator*/<I> &&
    std::random_access_iterator<I> &&
    /*nothrow-sized-sentinel-for*/<I, I>;
(4) (seit C++26)
(nur zur Veranschaulichung*)

Diese nur zur Veranschaulichung dienenden Konzepte legen fest, dass von Operationen, die von den spezialisierten <Speicher>-Algorithmen auf Iteratoren benötigt werden, keine Ausnahmen ausgelöst werden.

Für die Definitionen von /*nothrow-sentinel-for*/ und /*nothrow-sized-sentinel-for*/ siehe diese Seite.

Semantische Anforderungen

1) Ein Typ I modelliert nothrow-input-iterator nur, wenn keine Ausnahmen durch Inkrementieren, Kopierkonstruktion, Verschiebekonstruktion, Kopierzuweisung, Verschiebezuweisung oder Dereferenzieren gültiger Iteratoren des Typs I ausgelöst werden.
3) Ein Typ I modelliert nothrow-bidirectional-iterator nur, wenn keine Ausnahmen durch Dekrementieren gültiger Iteratoren des Typs I ausgelöst werden.
4) Ein Typ I modelliert nothrow-random-access-iterator nur, wenn keine Ausnahmen durch Vergleiche gültiger Iteratoren des Typs I oder die Operatoren -, +, -=, +=, [] auf gültigen Werten der Typen I und std::iter_difference_t<I> ausgelöst werden.

Anmerkungen

Diese Konzepte erlauben es, dass einige Operationen an Iteratoren Ausnahmen auslösen.

Siehe auch

gibt an, dass ein Typ ein Eingabe-Iterator ist, d. h., seine referenzierten Werte können gelesen werden und er kann sowohl vor- als auch nachinkrementiert werden
(Konzept)
gibt an, dass ein input_iterator ein Vorwärts-Iterator ist, der Gleichheitsvergleich und Mehrfachdurchlauf unterstützt
(Konzept)
gibt an, dass ein forward_iterator ein bidirektionaler Iterator ist, der Rückwärtsbewegung unterstützt
(Konzept)
gibt an, dass ein bidirectional_iterator ein Direktzugriffs-Iterator ist, der Vorrücken in konstanter Zeit und Indexzugriff unterstützt
(Konzept)