[insert.iterator] (original) (raw)

24 Iterators library [iterators]

24.5 Iterator adaptors [predef.iterators]

24.5.2 Insert iterators [insert.iterators]

24.5.2.4 Class template insert_iterator [insert.iterator]


24.5.2.4.1 General [insert.iter.general]

24.5.2.4.2 Operations [insert.iter.ops]

24.5.2.4.3 inserter [inserter]


24.5.2.4.1 General [insert.iter.general]

namespace std { template<class Container> class insert_iterator { protected: Container* container; ranges::iterator_t<Container> iter;public: using iterator_category = output_iterator_tag;using value_type = void;using difference_type = ptrdiff_t;using pointer = void;using reference = void;using container_type = Container;constexpr insert_iterator(Container& x, ranges::iterator_t<Container> i);constexpr insert_iterator& operator=(const typename Container::value_type& value);constexpr insert_iterator& operator=(typename Container::value_type&& value);constexpr insert_iterator& operator*();constexpr insert_iterator& operator++();constexpr insert_iterator& operator++(int);};}

24.5.2.4.2 Operations [insert.iter.ops]

constexpr insert_iterator(Container& x, ranges::iterator_t<Container> i);

Effects: Initializescontainerwith addressof(x) anditerwith i.

constexpr insert_iterator& operator=(const typename Container::value_type& value);

Effects: As if by:iter = container->insert(iter, value);++iter;

constexpr insert_iterator& operator=(typename Container::value_type&& value);

Effects: As if by:iter = container->insert(iter, std::move(value));++iter;

constexpr insert_iterator& operator*();

constexpr insert_iterator& operator++();constexpr insert_iterator& operator++(int);

24.5.2.4.3 inserter [inserter]

template<class Container> constexpr insert_iterator<Container> inserter(Container& x, ranges::iterator_t<Container> i);

Returns: insert_iterator<Container>(x, i).