zip_iterator_ref.rst

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

RST
156
字号
.. Copyright David Abrahams 2006. Distributed under the Boost.. Software License, Version 1.0. (See accompanying.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)::  template<typename IteratorTuple>  class zip_iterator  {    public:    typedef /* see below */ reference;    typedef reference value_type;    typedef value_type* pointer;    typedef /* see below */ difference_type;    typedef /* see below */ iterator_category;    zip_iterator();    zip_iterator(IteratorTuple iterator_tuple);    template<typename OtherIteratorTuple>    zip_iterator(          const zip_iterator<OtherIteratorTuple>& other        , typename enable_if_convertible<                OtherIteratorTuple              , IteratorTuple>::type* = 0     // exposition only    );    const IteratorTuple& get_iterator_tuple() const;  private:    IteratorTuple m_iterator_tuple;     // exposition only  };  template<typename IteratorTuple>   zip_iterator<IteratorTuple>   make_zip_iterator(IteratorTuple t);The ``reference`` member of ``zip_iterator`` is the type of the tuplemade of the reference types of the iterator types in the ``IteratorTuple``argument.The ``difference_type`` member of ``zip_iterator`` is the ``difference_type``of the first of the iterator types in the ``IteratorTuple`` argument.The ``iterator_category`` member of ``zip_iterator`` is convertible to theminimum of the traversal categories of the iterator types in the ``IteratorTuple``argument. For example, if the ``zip_iterator`` holds only vectoriterators, then ``iterator_category`` is convertible to ``boost::random_access_traversal_tag``. If you add a list iterator, then``iterator_category`` will be convertible to ``boost::bidirectional_traversal_tag``,but no longer to ``boost::random_access_traversal_tag``.``zip_iterator`` requirements...................................All iterator types in the argument ``IteratorTuple`` shall model Readable Iterator.  ``zip_iterator`` models.............................The resulting ``zip_iterator`` models Readable Iterator.The fact that the ``zip_iterator`` models only Readable Iterator does not prevent you from modifying the values that the individual iterators pointto. The tuple returned by the ``zip_iterator``'s ``operator*`` is a tuple constructed from the reference types of the individual iterators, not their value types. For example, if ``zip_it`` is a ``zip_iterator`` whosefirst member iterator is an ``std::vector<double>::iterator``, then thefollowing line will modify the value which the first member iterator of``zip_it`` currently points to:::    zip_it->get<0>() = 42.0;Consider the set of standard traversal concepts obtained by takingthe most refined standard traversal concept modeled by each individualiterator type in the ``IteratorTuple`` argument.The ``zip_iterator`` models the least refined standard traversal concept in this set.``zip_iterator<IteratorTuple1>`` is interoperable with``zip_iterator<IteratorTuple2>`` if and only if ``IteratorTuple1``is interoperable with ``IteratorTuple2``.``zip_iterator`` operations.................................In addition to the operations required by the concepts modeled by``zip_iterator``, ``zip_iterator`` provides the followingoperations.``zip_iterator();``:Returns: An instance of ``zip_iterator`` with ``m_iterator_tuple``  default constructed.``zip_iterator(IteratorTuple iterator_tuple);``:Returns: An instance of ``zip_iterator`` with ``m_iterator_tuple``  initialized to ``iterator_tuple``.::    template<typename OtherIteratorTuple>    zip_iterator(          const zip_iterator<OtherIteratorTuple>& other        , typename enable_if_convertible<                OtherIteratorTuple              , IteratorTuple>::type* = 0     // exposition only    );:Returns: An instance of ``zip_iterator`` that is a copy of ``other``.:Requires: ``OtherIteratorTuple`` is implicitly convertible to ``IteratorTuple``.``const IteratorTuple& get_iterator_tuple() const;``:Returns: ``m_iterator_tuple````reference operator*() const;``:Returns: A tuple consisting of the results of dereferencing all iterators in  ``m_iterator_tuple``.``zip_iterator& operator++();``:Effects: Increments each iterator in ``m_iterator_tuple``.:Returns: ``*this````zip_iterator& operator--();``:Effects: Decrements each iterator in ``m_iterator_tuple``.:Returns: ``*this``::    template<typename IteratorTuple>     zip_iterator<IteratorTuple>     make_zip_iterator(IteratorTuple t);:Returns: An instance of ``zip_iterator<IteratorTuple>`` with ``m_iterator_tuple``  initialized to ``t``.

⌨️ 快捷键说明

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