function_output_iterator.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 100 行

QBK
100
字号
[section:function_output Function Output Iterator]The function output iterator adaptor makes it easier to create customoutput iterators. The adaptor takes a unary function and creates amodel of Output Iterator. Each item assigned to the output iterator ispassed as an argument to the unary function.  The motivation for thisiterator is that creating a conforming output iterator is non-trivial,particularly because the proper implementation usually requires aproxy 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 andIncrementable 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]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?