mirror of
https://github.com/boostorg/iterator.git
synced 2025-05-09 23:23:54 +00:00
Reformatted reverse_iterator.hpp.
This commit is contained in:
parent
34f703cfb6
commit
1a58ca89d1
@ -4,8 +4,8 @@
|
|||||||
// Distributed under the Boost Software License, Version 1.0. (See
|
// Distributed under the Boost Software License, Version 1.0. (See
|
||||||
// accompanying file LICENSE_1_0.txt or copy at
|
// accompanying file LICENSE_1_0.txt or copy at
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP
|
#ifndef BOOST_ITERATOR_REVERSE_ITERATOR_23022003THW_HPP
|
||||||
#define BOOST_REVERSE_ITERATOR_23022003THW_HPP
|
#define BOOST_ITERATOR_REVERSE_ITERATOR_23022003THW_HPP
|
||||||
|
|
||||||
#include <boost/iterator/iterator_adaptor.hpp>
|
#include <boost/iterator/iterator_adaptor.hpp>
|
||||||
#include <boost/iterator/enable_if_convertible.hpp>
|
#include <boost/iterator/enable_if_convertible.hpp>
|
||||||
@ -13,60 +13,58 @@
|
|||||||
namespace boost {
|
namespace boost {
|
||||||
namespace iterators {
|
namespace iterators {
|
||||||
|
|
||||||
//
|
template< typename Iterator >
|
||||||
//
|
class reverse_iterator :
|
||||||
//
|
public iterator_adaptor< reverse_iterator< Iterator >, Iterator >
|
||||||
template <class Iterator>
|
{
|
||||||
class reverse_iterator
|
friend class iterator_core_access;
|
||||||
: public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
|
|
||||||
{
|
|
||||||
typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
|
|
||||||
|
|
||||||
friend class iterator_core_access;
|
private:
|
||||||
|
using super_t = iterator_adaptor< reverse_iterator< Iterator >, Iterator >;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
reverse_iterator() {}
|
reverse_iterator() = default;
|
||||||
|
|
||||||
explicit reverse_iterator(Iterator x)
|
explicit reverse_iterator(Iterator x) :
|
||||||
: super_t(x) {}
|
super_t(x)
|
||||||
|
{}
|
||||||
|
|
||||||
template<class OtherIterator>
|
template<
|
||||||
reverse_iterator(
|
typename OtherIterator,
|
||||||
reverse_iterator<OtherIterator> const& r
|
typename = enable_if_convertible_t< OtherIterator, Iterator >
|
||||||
, typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
|
>
|
||||||
)
|
reverse_iterator(reverse_iterator< OtherIterator > const& r) :
|
||||||
: super_t(r.base())
|
super_t(r.base())
|
||||||
{}
|
{}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typename super_t::reference dereference() const
|
typename super_t::reference dereference() const
|
||||||
{
|
{
|
||||||
Iterator it = this->base_reference();
|
Iterator it = this->base_reference();
|
||||||
--it;
|
--it;
|
||||||
return *it;
|
return *it;
|
||||||
}
|
}
|
||||||
|
|
||||||
void increment() { --this->base_reference(); }
|
void increment() { --this->base_reference(); }
|
||||||
void decrement() { ++this->base_reference(); }
|
void decrement() { ++this->base_reference(); }
|
||||||
|
|
||||||
void advance(typename super_t::difference_type n)
|
void advance(typename super_t::difference_type n)
|
||||||
{
|
{
|
||||||
this->base_reference() -= n;
|
this->base_reference() -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class OtherIterator>
|
template< typename OtherIterator >
|
||||||
typename super_t::difference_type
|
typename super_t::difference_type distance_to(reverse_iterator< OtherIterator > const& y) const
|
||||||
distance_to(reverse_iterator<OtherIterator> const& y) const
|
{
|
||||||
{
|
return this->base_reference() - y.base();
|
||||||
return this->base_reference() - y.base();
|
}
|
||||||
}
|
};
|
||||||
};
|
|
||||||
|
|
||||||
template <class BidirectionalIterator>
|
template< typename Iterator >
|
||||||
inline reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
|
inline reverse_iterator< Iterator > make_reverse_iterator(Iterator x)
|
||||||
{
|
{
|
||||||
return reverse_iterator<BidirectionalIterator>(x);
|
return reverse_iterator< Iterator >(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace iterators
|
} // namespace iterators
|
||||||
|
|
||||||
@ -75,4 +73,4 @@ using iterators::make_reverse_iterator;
|
|||||||
|
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP
|
#endif // BOOST_ITERATOR_REVERSE_ITERATOR_23022003THW_HPP
|
||||||
|
Loading…
x
Reference in New Issue
Block a user