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 an old version of Boost. Click here to view this page for the latest version.
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