Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the develop branch, built from commit 3785d1f795.
PrevUpHomeNext

Function Output Iterator

The function output iterator adaptor makes it easier to create custom output iterators. The adaptor takes a unary function and creates a model of Output Iterator. Each item assigned to the output iterator is passed as an argument to the unary function. The motivation for this iterator is that creating a conforming output iterator is non-trivial, particularly because the proper implementation usually requires a proxy object.

Example

struct string_appender
{
    string_appender(std::string& s)
        : m_str(&s)
    {}

    void operator()(const std::string& x) const
    {
        *m_str += x;
    }

    std::string* m_str;
};

int main(int, char*[])
{
  std::vector<std::string> x;
  x.push_back("hello");
  x.push_back(" ");
  x.push_back("world");
  x.push_back("!");

  std::string s = "";
  std::copy(x.begin(), x.end(),
      boost::make_function_output_iterator(string_appender(s)));

  std::cout << s << std::endl;

  return 0;
}

Reference

Synopsis

template <class UnaryFunction>
class function_output_iterator {
public:
  typedef std::output_iterator_tag iterator_category;
  typedef void                     value_type;
  typedef void                     difference_type;
  typedef void                     pointer;
  typedef void                     reference;

  explicit function_output_iterator();

  explicit function_output_iterator(const UnaryFunction& f);

  /* see below */ operator*();
  function_output_iterator& operator++();
  function_output_iterator& operator++(int);
private:
  UnaryFunction m_f;     // exposition only
};

Requirements

UnaryFunction must be Assignable and Copy Constructible.

Concepts

function_output_iterator is a model of the Writable and Incrementable Iterator concepts.

Operations

explicit function_output_iterator(const UnaryFunction& f = UnaryFunction());

Effects: Constructs an instance of function_output_iterator with m_f constructed from f.

unspecified_type operator*();

Returns: An object r of unspecified type such that r = t is equivalent to m_f(t) for all t.

function_output_iterator& operator++();

Returns: *this.

function_output_iterator& operator++(int);

Returns: *this.


PrevUpHomeNext