Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Реализация reverse_iterator

Posted on 21 июля, 201323 июля, 2013 by admin

Реализуйте reverse_iterator (параграф 19.2.5).

Не сильно я его делал просто перенабрал код из книги и он сразу заработал

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
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
using std::cout;
using std::endl;
#include <iterator>
using std::iterator;
using std::iterator_traits;
using std::reverse_iterator;
#include <vector>
using std::vector;
 
template<typename Iter>
class reverse_iterator1 : public iterator<typename iterator_traits<Iter>::iterator_category,
typename iterator_traits<Iter>::value_type,//значение
typename iterator_traits<Iter>::difference_type,
typename iterator_traits<Iter>::pointer,//указатель
typename iterator_traits<Iter>::reference>//ссылка
{
Iter curr;
public:
typedef Iter iterator_type;
//конструктор по умолчанию
reverse_iterator1():curr{}
//конструктор преобразования (запрет неявного вызова)
reverse_iterator1(Iter e):curr(e){}
//конструктор копирования
template<class U> reverse_iterator1(const reverse_iterator1<U>& e):curr(e.base()){}
Iter base()const{return curr;}//значение текущего итератора
reference operator*()const {Iter tmp=curr;return *--tmp;}
pointer operator->()const;
//это операция похоже для итераторов наврено как произвольного доступа
reference operator[](difference_type n)const;
 
reverse_iterator1& operator++(){--curr;return *this;}
reverse_iterator1 operator++(int){reverse_iterator1 t=curr; --curr; return t;}
reverse_iterator1& operator--(){++curr;return *this;}
reverse_iterator1 operator--(int){reverse_iterator1 t=curr;++curr; return t;}
reverse_iterator1 operator+(difference_type n)const;
reverse_iterator1& operator+=(difference_type n);
reverse_iterator1 operator-(difference_type n)const;
reverse_iterator1& operator-=(difference_type n);
bool operator!=(reverse_iterator1& e){return (curr!=e.curr);}
};
 
int main()
{
int mass[]={1,2,3,4,5};
vector<int> v(mass,mass+5);
 
reverse_iterator1<vector<int>::iterator> beg(v.end());
reverse_iterator1<vector<int>::iterator> end(v.begin());
 
while(beg!=end)
{
cout <<*beg++<<' ';
}
cout <<endl;
 
return 0;
}

[youtube]http://www.youtube.com/watch?v=rizYLdF1X6M[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
  • Татьяна к записи Как удалить изображение из google
©2021 Kselax.ru Theme by ThemeGiant