From cppreference.com
Defined in header
template<classContainer>std::insert_iterator<Container>inserter(Container&c,typenameContainer::iteratori);(until C++20)template<classContainer>constexprstd::insert_iterator<Container>inserter(Container&c,ranges::iterator_t<Container>i);(since C++20)inserter is a convenience function template that constructs a
for the container c and its iterator i with the type deduced from the type of the argument.
Parameters
c - container that supports an insert operation i - iterator in c indicating the insertion position Return value
A
which can be used to insert elements into the container c at the position indicated by i.
Possible implementation
template<classContainer>std::insert_iterator<Container>inserter(Container&c,typenameContainer::iteratori){returnstd::insert_iterator<Container>(c,i);}Example
Run this code
#include<algorithm>#include<iostream>#include<iterator>#include<set>#include<vector>intmain(){std::multiset<int>s{1,2,3};// std::inserter is commonly used with multi-setsstd::fill_n(std::inserter(s,s.end()),5,2);for(intn:s)std::cout<<n<<' ';std::cout<<'\n';std::vector<int>d{100,200,300};std::vector<int>v{1,2,3,4,5};// when inserting in a sequence container, insertion point advances// because each std::insert_iterator::operator= updates the target iteratorstd::copy(d.begin(),d.end(),std::inserter(v,std::next(v.begin())));for(intn:v)std::cout<<n<<' ';std::cout<<'\n';}Output:
1 2 2 2 2 2 2 3 1 100 200 300 2 3 4 5 Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 the type of i was independent of Containerit is the iterator type of ContainerSee also