std::inserter (3) - Linux Manuals

std::inserter: std::inserter

NAME

std::inserter - std::inserter

Synopsis


Defined in header <iterator>
template< class Container > (until C++20)
std::insert_iterator<Container> inserter( Container& c, typename Container::iterator i );
template< class Container > (since C++20)
constexpr std::insert_iterator<Container> inserter( Container& c, ranges::iterator_t<Container> i );


inserter is a convenience function template that constructs a std::insert_iterator for the container c and its iterator i with the type deduced from the type of the argument.

Parameters


c - container that supports a insert operation
i - iterator in c indicating the insertion position

Return value


A std::insert_iterator which can be used to insert elements into the container c at the position indicated by i.

Possible implementation


  template< class Container >
  std::insert_iterator<Container> inserter( Container& c, typename Container::iterator i )
  {
      return std::insert_iterator<Container>(c, i);
  }

Example


// Run this code


  #include <algorithm>
  #include <iostream>
  #include <iterator>
  #include <vector>
  #include <set>


  int main()
  {


      std::multiset<int> s {1, 2, 3};


      // std::inserter is commonly used with sets
      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> l {1, 2, 3, 4, 5};


      // when inserting in a sequence container, insertion point advances
      // because each std::insert_iterator::operator= updates the target iterator
      std::copy(d.begin(), d.end(), std::inserter(l, std::next(l.begin())));


      for (int n : l)
          std::cout << n << ' ';
      std::cout << '\n';
  }

Output:


  1 2 2 2 2 2 2 3
  1 100 200 300 2 3 4 5

See also


                iterator adaptor for insertion into a container
insert_iterator (class template)
                creates a std::back_insert_iterator of type inferred from the argument
back_inserter (function template)
                creates a std::front_insert_iterator of type inferred from the argument
front_inserter (function template)