counting_iterator_ref.rst

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

RST
150
字号
.. 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 <      class Incrementable    , class CategoryOrTraversal = use_default    , class Difference = use_default  >  class counting_iterator  {  public:      typedef Incrementable value_type;      typedef const Incrementable& reference;      typedef const Incrementable* pointer;      typedef /* see below */ difference_type;      typedef /* see below */ iterator_category;      counting_iterator();      counting_iterator(counting_iterator const& rhs);      explicit counting_iterator(Incrementable x);      Incrementable const& base() const;      reference operator*() const;      counting_iterator& operator++();      counting_iterator& operator--();  private:      Incrementable m_inc; // exposition  };If the ``Difference`` argument is ``use_default`` then``difference_type`` is an unspecified signed integraltype. Otherwise ``difference_type`` is ``Difference``.``iterator_category`` is determined according to the followingalgorithm:.. parsed-literal::   if (CategoryOrTraversal is not use_default)       return CategoryOrTraversal   else if (numeric_limits<Incrementable>::is_specialized)       return |iterator-category|_\ (           random_access_traversal_tag, Incrementable, const Incrementable&)   else       return |iterator-category|_\ (            iterator_traversal<Incrementable>::type,             Incrementable, const Incrementable&)        [*Note:* implementers are encouraged to provide an implementation of  ``operator-`` and a ``difference_type`` that avoids overflows in  the cases where ``std::numeric_limits<Incrementable>::is_specialized``  is true.]``counting_iterator`` requirements..................................The ``Incrementable`` argument shall be Copy Constructible and Assignable.If ``iterator_category`` is convertible to ``forward_iterator_tag``or ``forward_traversal_tag``, the following must be well-formed::    Incrementable i, j;    ++i;         // pre-increment    i == j;      // operator equalIf ``iterator_category`` is convertible to``bidirectional_iterator_tag`` or ``bidirectional_traversal_tag``,the following expression must also be well-formed::    --iIf ``iterator_category`` is convertible to``random_access_iterator_tag`` or ``random_access_traversal_tag``,the following must must also be valid::    counting_iterator::difference_type n;    i += n;    n = i - j;    i < j;``counting_iterator`` models............................Specializations of ``counting_iterator`` model Readable LvalueIterator. In addition, they model the concepts corresponding to theiterator tags to which their ``iterator_category`` is convertible.Also, if ``CategoryOrTraversal`` is not ``use_default`` then``counting_iterator`` models the concept corresponding to the iteratortag ``CategoryOrTraversal``.  Otherwise, if``numeric_limits<Incrementable>::is_specialized``, then``counting_iterator`` models Random Access Traversal Iterator.Otherwise, ``counting_iterator`` models the same iterator traversalconcepts modeled by ``Incrementable``.``counting_iterator<X,C1,D1>`` is interoperable with``counting_iterator<Y,C2,D2>`` if and only if ``X`` isinteroperable with ``Y``.``counting_iterator`` operations................................In addition to the operations required by the concepts modeled by``counting_iterator``, ``counting_iterator`` provides the followingoperations.``counting_iterator();``:Requires: ``Incrementable`` is Default Constructible.:Effects: Default construct the member ``m_inc``.``counting_iterator(counting_iterator const& rhs);``:Effects: Construct member ``m_inc`` from ``rhs.m_inc``.``explicit counting_iterator(Incrementable x);``:Effects: Construct member ``m_inc`` from ``x``.``reference operator*() const;``:Returns: ``m_inc````counting_iterator& operator++();``:Effects: ``++m_inc``:Returns: ``*this````counting_iterator& operator--();``:Effects: ``--m_inc``:Returns: ``*this``  ``Incrementable const& base() const;``:Returns: ``m_inc``

⌨️ 快捷键说明

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