123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- [section:function_output 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.
- [h2 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;
- }
- [h2 Reference]
- [h3 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
- };
- [h3 Requirements]
- `UnaryFunction` must be Assignable and Copy Constructible.
- [h3 Concepts]
- `function_output_iterator` is a model of the Writable and
- Incrementable Iterator concepts.
- [h3 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`.
- [endsect]
|