reverse_iterator_ref.rst
来自「Boost provides free peer-reviewed portab」· RST 代码 · 共 142 行
RST
142 行
.. 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 Iterator> class reverse_iterator { public: typedef iterator_traits<Iterator>::value_type value_type; typedef iterator_traits<Iterator>::reference reference; typedef iterator_traits<Iterator>::pointer pointer; typedef iterator_traits<Iterator>::difference_type difference_type; typedef /* see below */ iterator_category; reverse_iterator() {} explicit reverse_iterator(Iterator x) ; template<class OtherIterator> reverse_iterator( reverse_iterator<OtherIterator> const& r , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 // exposition ); Iterator const& base() const; reference operator*() const; reverse_iterator& operator++(); reverse_iterator& operator--(); private: Iterator m_iterator; // exposition };If ``Iterator`` models Random Access Traversal Iterator and ReadableLvalue Iterator, then ``iterator_category`` is convertible to``random_access_iterator_tag``. Otherwise, if``Iterator`` models Bidirectional Traversal Iterator and ReadableLvalue Iterator, then ``iterator_category`` is convertible to``bidirectional_iterator_tag``. Otherwise, ``iterator_category`` isconvertible to ``input_iterator_tag``.``reverse_iterator`` requirements.................................``Iterator`` must be a model of Bidirectional Traversal Iterator. Thetype ``iterator_traits<Iterator>::reference`` must be the type of``*i``, where ``i`` is an object of type ``Iterator``.``reverse_iterator`` models...........................A specialization of ``reverse_iterator`` models the same iteratortraversal and iterator access concepts modeled by its ``Iterator``argument. In addition, it may model old iterator conceptsspecified in the following table:+---------------------------------------+-----------------------------------+| If ``I`` models |then ``reverse_iterator<I>`` models|+=======================================+===================================+| Readable Lvalue Iterator, | Bidirectional Iterator || Bidirectional Traversal Iterator | |+---------------------------------------+-----------------------------------+| Writable Lvalue Iterator, | Mutable Bidirectional Iterator || Bidirectional Traversal Iterator | |+---------------------------------------+-----------------------------------+| Readable Lvalue Iterator, | Random Access Iterator || Random Access Traversal Iterator | |+---------------------------------------+-----------------------------------+| Writable Lvalue Iterator, | Mutable Random Access Iterator || Random Access Traversal Iterator | |+---------------------------------------+-----------------------------------+``reverse_iterator<X>`` is interoperable with``reverse_iterator<Y>`` if and only if ``X`` is interoperable with``Y``.``reverse_iterator`` operations...............................In addition to the operations required by the concepts modeled by``reverse_iterator``, ``reverse_iterator`` provides the followingoperations.``reverse_iterator();``:Requires: ``Iterator`` must be Default Constructible.:Effects: Constructs an instance of ``reverse_iterator`` with ``m_iterator`` default constructed.``explicit reverse_iterator(Iterator x);``:Effects: Constructs an instance of ``reverse_iterator`` with ``m_iterator`` copy constructed from ``x``.:: template<class OtherIterator> reverse_iterator( reverse_iterator<OtherIterator> const& r , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 // exposition );:Requires: ``OtherIterator`` is implicitly convertible to ``Iterator``.:Effects: Constructs instance of ``reverse_iterator`` whose ``m_iterator`` subobject is constructed from ``y.base()``.``Iterator const& base() const;``:Returns: ``m_iterator````reference operator*() const;``:Effects: :: Iterator tmp = m_iterator; return *--tmp;``reverse_iterator& operator++();``:Effects: ``--m_iterator``:Returns: ``*this````reverse_iterator& operator--();``:Effects: ``++m_iterator``:Returns: ``*this``
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?