template<typename Iterator> struct VectorReverseIterator :
public std::reverse_iterator<Iterator> {
- explicit VectorReverseIterator(Iterator iter) : iter_(iter) {}
+ explicit VectorReverseIterator(Iterator iter) : std::reverse_iterator<Iterator>(iter) {}
- typename Iterator::value_type operator*() const { return *(iter_ - 1); }
+ typename Iterator::value_type operator*() const { return *(std::reverse_iterator<Iterator>::current - 1); }
- typename Iterator::value_type operator->() const { return *(iter_ - 1); }
-
- private:
- Iterator iter_;
+ typename Iterator::value_type operator->() const { return *(std::reverse_iterator<Iterator>::current - 1); }
};
struct String;
reverse_iterator rbegin() { return reverse_iterator(end()); }
const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
- reverse_iterator rend() { return reverse_iterator(end()); }
- const_reverse_iterator rend() const { return const_reverse_iterator(end()); }
+ reverse_iterator rend() { return reverse_iterator(begin()); }
+ const_reverse_iterator rend() const { return const_reverse_iterator(begin()); }
const_iterator cbegin() const { return begin(); }