43#ifndef LASS_GUARDIAN_OF_INCLUSION_STDE_OVERWRITE_INSERT_ITERATOR_H
44#define LASS_GUARDIAN_OF_INCLUSION_STDE_OVERWRITE_INSERT_ITERATOR_H
53template <
typename Container>
54class overwrite_insert_iterator
58 typedef Container container_type;
60 typedef std::output_iterator_tag iterator_category;
61 typedef void value_type;
62 typedef void difference_type;
64 typedef void reference;
66 explicit overwrite_insert_iterator(container_type& container):
67 container_(&container),
68 end_(container.begin())
72 overwrite_insert_iterator& operator=(
const overwrite_insert_iterator& other)
74 container_ = other.container_;
79 overwrite_insert_iterator& operator=(
typename Container::const_reference x)
81 if (end_ != container_->end())
87 container_->push_back(x);
88 end_ = container_->end();
93 overwrite_insert_iterator& operator*() {
return *
this; }
94 overwrite_insert_iterator& operator++() {
return *
this; }
95 overwrite_insert_iterator& operator++(
int) {
return *
this; }
97 typename Container::iterator begin() {
return container_->begin(); }
98 typename Container::iterator end() {
return end_; }
99 typename Container::const_iterator begin()
const {
return container_->begin(); }
100 typename Container::const_iterator end()
const {
return end_; }
104 Container* container_;
105 typename Container::iterator end_;
108template <
typename Container>
109overwrite_insert_iterator<Container> overwrite_inserter(Container& container)
111 return overwrite_insert_iterator<Container>(container);
lass extensions to the standard library
Library for Assembled Shared Sources.