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

Итератор для массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти сумму ряда с заданной точностью c http://www.cyberforum.ru/cpp-beginners/thread568045.html
Найти сумму ряда с заданной точностью. Точность и значение переменной х вводить с клавиатуры. Осуществить проверку ошибок ввода. Считать ошибочными значения х, которые приводят к расхождению ряда. Почти такой но не получается , помогите #include <conio.h> #include <stdio.h> void main(){ clrscr(); printf("‚¢¥¤¨â¥ â®ç*®áâì: "); float eps;
C++ Метод броуновского моделирования Здравствуйте. Суть проблемы такова: нужно реализовать метод броуновского блуждания ансамбля частиц в миллион штук. Как задать этот ансамбль? Вектором или массивом? http://www.cyberforum.ru/cpp-beginners/thread568037.html
Получить все сочетания из 10 элементов 1, ..., 10, по 4 элемента в каждом. C++
Получить все сочетания из 10 элементов 1, ..., 10, по 4 элемента в каждом.
Создание диалогового окна из DLL C++
Доброго всем времени! Ситуация следующая: Создаю DLL для внешнего приложения, которая обменивается с ним сообщениями (плагин). Возникла необходимость настройки моего плагина, решил сделать диалоговое окно с настройками, которое должно появляться в ответ на запрос этого самого внешнего приложения. Из-за нехватки опыта, для меня пока непонятно, есть ли разница для сабжа в расширении моей...
C++ Ошибка: error LNK2019: unresolved external symbol http://www.cyberforum.ru/cpp-beginners/thread568017.html
В общем делаю курсач, есть фунция ввода списка, но тут такая проблема: у меня не компилируется, то что я написал(точнее LINK не проходит) с ошибками: 1>курсовая.obj : error LNK2019: unresolved external symbol "void __cdecl inputs(char *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)"...
C++ Адресная книга Дали задание создать класс с добавлением, удалением и выводом знчаений на экран...и это все в динамическом массиве да и еще ассоциативно. Не подскажите, с чего бы начать?что обязательно помимо класса должно быть в программе? подробнее

Показать сообщение отдельно
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
07.05.2012, 23:53  [ТС]     Итератор для массива
необходимо довести до ума этот код:
добавить в него итератор, имеющий доступ к остальным членам контейнера (чтоб мог обращаться к vect и bvect)

Добавлено через 3 часа 23 минуты
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
 
template <class Type> class mas
{
public:
    class iterator {
    mas* masive;
    public:
    int index;
    void Setmas(mas* m){masive=m;}
    Type& operator*() { return masive[index];}           в этих строках
    Type* operator->() { return &masive[index];}        ошибка: возвращаемый параметр - явный -инт. невозможно совместить с Type
    Type* operator++() {index++; return mas[index]; }
    Type* operator--() {index--; return mas[index]; }
    bool operator==(const iterator& other) const {return index == other.index; }
    bool operator!=(const iterator& other) const {return !(index == other.index); }
  };
private:
    vector <Type*> vect;
    vector <bool>  bvect;
    unsigned int size_of_block;
    unsigned int size;
    unsigned int count_of_blocks;
int CountOfBlocks()
{
    return count_of_blocks;
}
mas(const mas& source)
    {
        if(size>source.Size()) // обрезаем лишнее
            Cut(source.Size());     
        size_of_block=source.SizeOfBlock();
        for(int i=0;i<count_of_blocks;i++)
                {
                    delete vect[i];
                    vect.erase(i);
                }
        for(int j=0;j<size;j++)
            [j]=source[j];
        count_of_blocks=source.CountOfBlocks();
        bvect=source.bvect;
        int i=0;
        while(i<bvect.size)
            if(bvect[i++]==false)
                delete vect[i-1];
}
public:
iterator begin()
{   iterator it;
    it.Setmas(this);
    it.index=0;
    return it;
}
iterator end()
{
    iterator it;
    it.Setmas(this);
    it.index=masive.Size();
    return it;
}
int SizeOfBlock()
{
    return size_of_block;
}
int Size()
{
    return size;
}
mas()
    {
        count_of_blocks=1;
        size_of_block=50;
        size=50;
        Type*p=new Type[size_of_block];
        vect.push_back(p);
        bvect.push_back(true);
    }
mas(unsigned int _size)
    {
        count_of_blocks=1;
        size_of_block=_size;
        size=size_of_block;
        Type* p=new Type[size_of_block];
        vect.push_back(p);
        bvect.push_back(true);
    }
Type& operator[](int index)
{
    if(index>size)
    {
        Type* p;
        while(index/size_of_block>count_of_blocks)
        {
            vect.push_back(p);
            count_of_blocks++;
            size+=size_of_block;
            bvect.push_back(false);
        }
            p=new Type[size_of_block];
            vect.push_back(p);
            count_of_blocks++;
            size+=size_of_block;
            bvect.push_back(true);
    }
if(bvect[index/size_of_block]==false)
    {
        bvect[index/size_of_block]=true;
        vect[index/size_of_block]=new Type[size_of_block];
    }
    return vect[index/size_of_block][index%size_of_block];
}
void Cut(int newsize)
{
    int needed_cnt=newsize/size_of_block;
    if(needed_cnt<count_of_blocks)
    {
        while(count_of_blocks>needed_cnt)
        {
            delete vect[--count_of_blocks];
            vect.pop_back();
            bvect.pop_back();
        }
    }
    size=newsize;
}
};
void main()
{
    mas <int> mass;
    mas<int>::iterator i=mass.begin();
    mass[0]=123;
    cout<<*i;
    cin>>mass[2];
}
я в итератор положил указатель на контейнер и за данными - обращаюсь к нему, но с типами лажа (см. код. там указано сбойное место)
как устранить это??
 
Текущее время: 13:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru