1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
template <typename Type>
class reverse_iter
{
public:
explicit reverse_iter(Type *x)
:
current(x)
{}
Type &operator*() const
{
Type
*tmp = current;
return (*--tmp);
}
Type *operator->() const
{
return &(operator*());
}
reverse_iter<Type>& operator++()
{
--current;
return (*this);
}
reverse_iter<Type> operator++(int)
{
reverse_iter<Type>
tmp(current--);
return (tmp);
}
bool operator!=(reverse_iter<Type> const &other)
{
return (current != other.current);
}
private:
Type
*current;
};
using reverse_iterator = reverse_iter<Type>;
inline reverse_iterator rbegin()
{
return reverse_iterator(finish);
}
inline reverse_iterator rend()
{
return reverse_iterator(data);
}
|