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

Итератор для собственного контейнера - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамические структуры данных http://www.cyberforum.ru/cpp-beginners/thread574161.html
1.Разработайте динамическую структуру для решения задачи. Последовательность чисел Фибоначчи задается по закономерности: f1 = 1, f2 = 1, ..., fn = fn-1 + fn-2. Распечатайте n чисел Фибоначчи в...
C++ Шаблон очереди + шаблон записи? Реализовать шаблон класса Ocher, реализующий однонаправленную очередь. Для представления элемента очереди использовать шаблон класса Node. Определить функции добавления элемента в очередь и... http://www.cyberforum.ru/cpp-beginners/thread574135.html
Стирать в Series определенные точки C++
Такой вопрос возник. Можно ли как то стирать на графике в Series определенный кусок графика? А то функция Clear() очищает соответсвенно весь график.
Рекурсия (вычисления интеграла) C++
Есть программа которая вычисляет интеграл методом трапеции и Симпсона, надо усовершенствовать код чтобы функции вычисляли интеграл рекуррентным способом(сделать их рекурсивными) Код: #include...
C++ Плюсы и минусы http://www.cyberforum.ru/cpp-beginners/thread574084.html
В массиве Z(m) найти число чередований знака, то есть число переходов с плюсов на минус или с минуса на плюс. Например, в последовательности 0, -2, 0, -10, 2, -1, 0, 0, 3, 2 ,-3 четыре чередования...
C++ Нужны imagehlp.lib Нужны imagehlp.lib для Visual studio 2010, пакет SDK целиком устанавливала, но программа все равно не работает, выдает ошибку подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.05.2012, 16:46
Форматируйте ж вы код-то.

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
103
104
105
106
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
 
template <class Type> class mas
{
    map <int, Type> m;  
    Type* makeptr(unsigned int ind)
    {
    return  &m.find(ind)->second;
    }   
    Type& make(unsigned int ind)
    {
        return m.find(ind)->second;
    }
    mas (const mas& source)
    {
        m=source.m;
    }
    unsigned int minindex()
    {
        int index=m.begin()->first;
        for(typename map<int,Type>::iterator iterat=m.begin();iterat!=m.end();iterat++)
                    if(index>iterat->first)
                         index=iterat->first;
        return index;
    }
    unsigned int maxindex()
    {
        int index=m.begin()->first;
        for(typename map<int,Type>::iterator iterat=m.begin();iterat!=m.end();iterat++)
                    if(index<iterat->first)
                         index=iterat->first;
        return index;
    }
public:
    class iterator
    {
      typedef Type value_type;
      typedef Type* pointer;
      typedef ptrdiff_t difference_type;
      typedef Type& reference;
      typedef std::bidirectional_iterator_tag iterator_category;
 
      unsigned int index;
      mas<value_type>* ptr;
      public:
      pointer operator++()
      {
          return ptr->makeptr(index++);
      }
      iterator operator--()
      {
         return ptr->makeptr(index--);
      }
      reference operator*() {return ptr->make(index);}
      pointer operator->(){return ptr->makeptr(index);}
      bool operator==(const iterator& other) const {return index == other.index; }
      bool operator!=(const iterator& other) const {return !(index == other.index); }
      iterator(int a,mas<value_type>* p)
      {
          ptr=p;
          index=a;
      }
   };
    friend class mas::iterator;
   mas(){}
   Type& operator [](int index)
   {
      typename map<int,Type>::iterator i=m.find(index);
      if(i==m.end())
      {
         Type something;
         m.insert(pair<int,Type>(index,something));
         i=m.find(index);
      }
      return i->second;; 
   }
   iterator begin()
   {
       mas::iterator it(minindex(),this);
       return it;
   }
   iterator end()
   {
       mas::iterator it(maxindex()+1,this);
       return it;
   }
};
 
void    fun (int a)
{
    cout << a << " ";
}
int main()
{
    mas <int> mass;
    for(int i=0;i<9;)
        cin>>mass[i++];
    for_each(mass.begin(),mass.end(),fun);
    /*for(mas<int>::iterator i=mass.begin();i!=mass.end();++i)   
        cout << *i <<" ";*/
    cout << endl;
    system("pause");
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru