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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамические структуры данных http://www.cyberforum.ru/cpp-beginners/thread574161.html
1.Разработайте динамическую структуру для решения задачи. Последовательность чисел Фибоначчи задается по закономерности: f1 = 1, f2 = 1, ..., fn = fn-1 + fn-2. Распечатайте n чисел Фибоначчи в следующем порядке: сначала все четные, затем все нечетные элементы. 2. Разработайте динамическую структуру для решения задачи. Даны целые числа p и q. Получить все делители числа q, взаимно простые с...
C++ Шаблон очереди + шаблон записи? Реализовать шаблон класса Ocher, реализующий однонаправленную очередь. Для представления элемента очереди использовать шаблон класса Node. Определить функции добавления элемента в очередь и поиска в очереди заданной информации. Задачу №2 написать в двух вариантах: 1) в первом варианте задачу реализовать просто как шаблонный класс; 2) во втором варианте задачу реализовать как класс... http://www.cyberforum.ru/cpp-beginners/thread574135.html
Стирать в Series определенные точки C++
Такой вопрос возник. Можно ли как то стирать на графике в Series определенный кусок графика? А то функция Clear() очищает соответсвенно весь график.
Рекурсия (вычисления интеграла) C++
Есть программа которая вычисляет интеграл методом трапеции и Симпсона, надо усовершенствовать код чтобы функции вычисляли интеграл рекуррентным способом(сделать их рекурсивными) Код: #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <math.h> #include <conio.h> using namespace std; //Определяем константы #define a 0
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 целиком устанавливала, но программа все равно не работает, выдает ошибку подробнее

Показать сообщение отдельно
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
14.05.2012, 16:33     Итератор для собственного контейнера
понимаю, что уже создан миллион подобных тем, НО я не вьехал в них.
мне необходимо реализовать собственный контейнер для использования его в алгоритмах stl
контейнер организовал, теперь необходимо реализовать итератор, совместимый с STL-алгоритмами, тут и вышла заминка
помогите кто чем может, пожалуйста!
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
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#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(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(map<int,Type>::iterator iterat=m.begin();iterat!=m.end();iterat++)
                    if(index<iterat->first)
                         index=iterat->first;
        return index;
}
public:
    class iterator{
                        unsigned int index;
                        mas<Type>* ptr;
                        public:
                        Type* operator++()
                        {
                            return ptr->makeptr(index++);
                        }
                        iterator operator--()
                        {
                            return ptr->makeptr(index--)
                        }
                        Type& operator*() {return ptr->make(index);}
                        Type* 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<Type>* p)
                        {
                            ptr=p;
                            index=a;
                        }
 
                        };
    friend class mas::iterator;
mas(){}
Type& operator [](int index)
{
    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<<" ";
}
void 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<<" ";
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru