Форум программистов, компьютерный форум CyberForum.ru

Как реализуется типичный итератор? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Чтение файла http://www.cyberforum.ru/cpp-beginners/thread992284.html
Доброго времени суток. Пишу программу которая может читать каждый символ файла. #include<iostream> #include<fstream> #include<stdio.h> #include<conio.h> //void funk(char); using namespace std; int main()
C++ Напишите программу для нахождения суммы / произведения заданного ряда y=(1/a+1/2*a+1/3*a+...+1/n*a) #include<iostream> #include<cmath> #include <conio.h> #include <stdlib.h> using namespace std; int main() { setlocale(0,"Rus"); cout<<"Дано вещественное a и натуральное n"<<endl; http://www.cyberforum.ru/cpp-beginners/thread992282.html
Создать класс Model Window для работы с моделями экранных окон C++
Помогите написать программу...Создать класс Model Window для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхнего угла, размер по горизонтали, размер по вертикали, цвет окна, состояние «видимое/невидимое», состояние «с рамкой/без рамки». Координаты и размеры указываются в целых числах. Реализовать операции: передвижение окна по горизонтали, по...
C++ Мама купила в магазине полкилограмма масла, S граммов сыра, М кг муки и В кг К граммов конфет. Определить вес всех покупок в килограммах
#include<iostream> using namespace std; int main() { setlocale(0,"Rus"); float a,b,c,f,v; cout<<"Введите массу покупок в магазине :"<<endl; cout<<"Cыра- "; cin>>a; cout<<" грамм"<<endl;
C++ Напишите программу для нахождения самой короткой стороны треугольника с вершина-ми A (X1, Y1), B (X2, Y2), C (X3, Y3) http://www.cyberforum.ru/cpp-beginners/thread992264.html
#include<iostream> #include<cmath> #include <conio.h> #include <stdlib.h> using namespace std; int main() { setlocale(0,"Rus"); float x1,x2,y1,y2,z1,z2;
C++ Случайное предсказание Помогите пожалуйста. Нужно составить программу случайного предсказания 1 из 10 ближайшего будущего, с шансом на неудачу. Используя оператор switch\switch-case подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6228 / 3473 / 425
Регистрация: 29.11.2010
Сообщений: 9,178
30.10.2013, 04:31     Как реализуется типичный итератор?
C++
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#ifndef _MYITERATOR_H_
#define _MYITERATOR_H_
#include <iterator>
 
template <typename T>
class MyIterator
{
public:
    typedef T value_type;
    typedef T* pointer;
    typedef T& reference;
    typedef std::forward_iterator_tag iterator_category;
    typedef ptrdiff_t difference_type;
 
    // конструкторы
    MyIterator();
    MyIterator(T *);
    MyIterator(const MyIterator &);
    // оператор присваиваний
    MyIterator& operator =(const MyIterator &);
 
    // сдвиги операторов
    MyIterator& operator ++();    // префиксный инкремент
    MyIterator  operator ++(int); // постфиксная инкремент
 
    // операторы обращения
    T& operator *();
    T* operator ->();
 
    // операторы сравнения
    bool operator ==(const MyIterator &);
    bool operator !=(const MyIterator &);
 
private:
    T* current;
};
 
 
template <typename T>
MyIterator<T>::MyIterator() : current(0)
{}
 
template <typename T>
MyIterator<T>::MyIterator(T* curr) : current(curr)
{}
 
template <typename T>
MyIterator<T>::MyIterator(const MyIterator& other) : current(other.current)
{}
 
template <typename T>
MyIterator<T>& MyIterator<T>::operator =(const MyIterator& other)
{
    // исключаем присваивание самому себе
    if (this != &other)
        current = other.current;
 
    return *this;
}
 
//префиксная версия возвращает значение после инкремента
template <typename T>
MyIterator<T>& MyIterator<T>::operator ++()
{
    ++current;
    return *this;
}
 
//постфиксная версия возвращает значение до инкремента
template <typename T>
MyIterator<T> MyIterator<T>::operator ++(int)
{
    MyIterator tmp(*this);
    operator++();
    return tmp;
}
 
template <typename T>
T& MyIterator<T>::operator *()
{
    return *current;
}
 
template <typename T>
T* MyIterator<T>::operator ->()
{
    return current;
}
 
template <typename T>
bool MyIterator<T>::operator ==(const MyIterator &other)
{
    return current == other.current;
}
 
template <typename T>
bool MyIterator<T>::operator !=(const MyIterator &other)
{
    return !(*this == other);
}
 
#endif
 
Текущее время: 18:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru