std:: inserter
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im Header
<iterator>
|
||
|
template
<
class
Container
>
std::
insert_iterator
<
Container
>
|
(bis C++20) | |
|
template
<
class
Container
>
constexpr
std::
insert_iterator
<
Container
>
|
(seit C++20) | |
inserter
ist eine praktische Funktionsvorlage, die einen
std::insert_iterator
für den Container
c
und seinen Iterator
i
konstruiert, wobei der Typ aus dem Typ des Arguments abgeleitet wird.
Inhaltsverzeichnis |
Parameter
| c | - |
Container, der eine
insert
-Operation unterstützt
|
| i | - | Iterator in c , der die Einfügeposition angibt |
Rückgabewert
Ein std::insert_iterator , der verwendet werden kann, um Elemente in den Container c an der durch i angegebenen Position einzufügen.
Mögliche Implementierung
template<class Container> std::insert_iterator<Container> inserter(Container& c, typename Container::iterator i) { return std::insert_iterator<Container>(c, i); } |
Beispiel
#include <algorithm> #include <iostream> #include <iterator> #include <set> #include <vector> int main() { std::multiset<int> s{1, 2, 3}; // std::inserter wird häufig mit Multi-Sets verwendet std::fill_n(std::inserter(s, s.end()), 5, 2); for (int n : s) std::cout << n << ' '; std::cout << '\n'; std::vector<int> d{100, 200, 300}; std::vector<int> v{1, 2, 3, 4, 5}; // Beim Einfügen in einen Sequenzcontainer rückt die Einfügeposition vor // da jeder std::insert_iterator::operator= den Zieliterator aktualisiert std::copy(d.begin(), d.end(), std::inserter(v, std::next(v.begin()))); for (int n : v) std::cout << n << ' '; std::cout << '\n'; }
Ausgabe:
1 2 2 2 2 2 2 3 1 100 200 300 2 3 4 5
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 561 | C++98 |
der Typ von
i
war unabhängig von
Container
|
es ist der Iteratortyp von
Container
|
Siehe auch
|
Iterator-Adapter für das Einfügen in einen Container
(Klassentemplate) |
|
|
erstellt einen
std::back_insert_iterator
vom vom Argument abgeleiteten Typ
(Funktionstemplate) |
|
|
erstellt einen
std::front_insert_iterator
vom vom Argument abgeleiteten Typ
(Funktionstemplate) |