Namensräume
Varianten
Aktionen

std::output_iterator

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
output_iterator
(C++20)

Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definiert in Header <iterator>
template< class I, class T >

    concept output_iterator =
        std::input_or_output_iterator<I> &&
        std::indirectly_writable<I, T> &&
        requires(I i, T&& t) {
            *i++ = std::forward<T>(t); /* nicht gleichheitserhaltend erforderlich */

        };
(seit C++20)

Das Konzept output_iterator ist eine Verfeinerung von input_or_output_iterator und fügt die Anforderung hinzu, dass es zum Schreiben von Werten des durch T kodierten Typs und der Wertkategorie (über indirectly_writable) verwendet werden kann. equality_comparable ist nicht erforderlich.

Inhalt

[bearbeiten] Semantische Anforderungen

Sei E ein Ausdruck, sodass decltype((E)) T ist, und i ein dereferenzierbares Objekt vom Typ I. std::output_iterator<I, T> wird nur dann modelliert, wenn alle von ihm umfassten Konzepte modelliert werden und *i++ = E; Effekte hat, die äquivalent zu *i = E; ++i; sind.

[bearbeiten] Gleichheitserhaltung

Ausdrücke, die in requires-Ausdrücken der Standardbibliothekskonzepte deklariert sind, müssen gleichheitserhaltend sein (sofern nicht anders angegeben).

[bearbeiten] Anmerkungen

Im Gegensatz zu den LegacyOutputIterator-Anforderungen erfordert das Konzept output_iterator nicht, dass das Iterator-Kategorie-Tag definiert ist.

Algorithmen für Ausgabe-Iteratoren sollten Einpass-fähig sein.

[bearbeiten] Siehe auch

spezifiziert, dass Objekte eines Typs inkrementiert und dereferenziert werden können
(Konzept) [bearbeiten]