РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)
Шрифт:
template ‹class BidirectionalIterator, class T, class Reference = T&, class Distance = ptrdiff_t›
class reverse_bidirectionaiIterator : public bidirectional_iterator‹T, Distance› {
typedef reverse_bidirectional_iterator‹BidirectionalIterator, T, Reference, Distance› self;
friend bool operator==(const self& х, const self& y);
protected:
BidirectionalIterator current;
public:
reverse_bidirectional_iterator {}
reverse_bidirectional_iterator(BidirectionalIterator
х) : current(х) {}
BidirectionalIterator base {return current;}
Reference operator* const {
BidirectionalIterator tmp = current;
return *--tmp;
}
self& operator++ {
– -current;
return *this;
}
self operator++(int) {
self tmp = *this;
– -current;
return tmp;
}
self& operator-- {
++current;
return *this;
}
self operator--(int) {
self tmp = *this;
++current;
return tmp;
}
};
template ‹class BidirectionalIterator, class T, class Reference, class Distance›
inline bool operator==(const reverse_bidirectional_iterator‹BidirectionalIterator, T, Reference, Distance›& x, const reverse_bidirectional_iterator‹BidirectionalIterator,
T, Reference, Distance›& y) {
return x.current==y.current;
}
template ‹class RandomAccessIterator, class T, class Reference = T&, class Distance = ptrdiff_t›
class reverse_iterator: public random_access_iterator‹T, Distance› {
typedef reverse_iterator‹RandomAccessIterator, T, Reference, Distance› self;
friend bool operator==(const self& x, const self& y);
friend bool operator‹(const self& x, const self& y);
friend Distance operator-(const self& x, const self& y);
friend self operator+(Distance n, const self& x);
protected:
RandomAccessIterator current;
public:
reverse_iterator {}
reverse_iterator(RandomAccessIterator x): current (x) {}
RandomAccessIterator base {return current;}
Reference operator* const {
RandomAccessIterator tmp = current;
return *--tmp;
}
self& operator++ {
– -current;
return *this;
}
self operator++(int) {
self tmp = *this;
– -current;
return tmp;
}
self& operator-- {
++current;
return *this;
}
self operator--(int) {
self tmp = *this;
++current;
return tmp;
}
self operator+(Distance n) const {
return self(current - n);
}
self& operator+=(Distance n) {
current -= n;
return *this;
}
self operator-(Distance n) const {
return self(current + n);
}
self operator-=(Distance n) {
current += n;
return *this;
}
Reference operator[](Distance n) {return *(*this + n);}
};
template ‹class RandomAccessIterator, class T, class Reference, class Distance›
inline bool operator==(const reverse_iterator‹RandomAccessIterator, T, Reference, Distance›& x, const reverse_iterator‹RandomAccessIterator, T, Reference, Distance›& y) {
return x.current == y.current;
}
template ‹class RandomAccessIterator, class T, class Reference, class Distance›
inline bool operator‹(const reverse_iterator‹RandomAccessIterator, T, Reference, Distance›& x, const reverse_iterator‹RandomAccessIterator, T, Reference, Distance›& y) {
return y.current ‹ x.current;
}
template ‹class RandomAccessIterator, class T, class Reference, class Distance›
Поделиться:
Популярные книги
Газлайтер. Том 4
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Сумеречный стрелок 8
8. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIX
19. Кодекс Охотника
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 3
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Санек
1. Санек
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Довлатов. Сонный лекарь 3
3. Не вывожу
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кремлевские звезды
6. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Назад в ссср 6
6. Курсант
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Ваше Сиятельство 7
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Особое назначение
2. Гарем вне закона
Фантастика:
фэнтези
6.89
рейтинг книги
Инферно
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Охотник за головами
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Назад в СССР: 1985 Книга 2
2. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
6.00