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

Класс как стандартный контейнер - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Решение нелинейного уравнения методом итераций в с++ http://www.cyberforum.ru/cpp-beginners/thread861556.html
Помогите пожалуйста решить нелинейное уравнение x^2-2x-1 = 0 промежуток от 0 до 3. Находил несколько кусков кода но так и не понял как туда вставить уравнение.
C++ Определить принадлежность точки с координатами (x, y) закрашенной области помогите разобраться как правильно записать условия попадания точки в заданную область(правильно описать A и B, я разделил фигуру на 2 части) в геометрии у меня не особо получается разбираться) #include<iostream.h> #include<conio.h> main() { system("chcp 1251"); double x,y; cout<<"Введите координаты точки:"<<endl; http://www.cyberforum.ru/cpp-beginners/thread861554.html
C++ Пересечение двух окружностей
Есть такая задачка. Вам даны две окружности в плоскости. Найдите все их различные точки пересечения. В силу большой требуемой точности рекомендуется использовать более чем 8-байтные вещественнозначные типы при вычислениях. Вот тут сразу вопрос, это какие типы ? double 8 байтный, больше не знаю. Пишу на MVSC++ 2012 Входные данные В первой строке M (1 <= M <= 10000) -- количество тестов....
Манипуляторы C++
Ребята, проблема с манипуляторами.. Вместо того чтобы были пустые места, программа выдает нули(( void view(HANDLE hrFile) { Miami_Heat Club; int num = 0; DWORD dwCount; cout<<"--------------------------------------------------------------------"<<endl; cout<<"|"<<setw(7)<<"Name"<<setw(4)<<"|"<<setw(8)<<"Surname"<<setw(2)<<"|"<<"Pos"<<"|"<<setw(2)<<" Nat ...
C++ Удаление слов из текста http://www.cyberforum.ru/cpp-beginners/thread861510.html
Добрый день! есть задачка: Определить самое короткое слово в каждом предложении. Удалить эти слова из текста.Для обработки строк следует использовать функции стандартной библиотеки <cstring>.Примечание: следует использовать строки, представленные как массив символов. Строки, созданные с помощью классов (таких, как например, string из библиотеки STL) использовать запрещается. У меня получился...
C++ ввод пути к файлу с консоли подскажите пожалуйста, вот как отрыть файл для работы с ним я знаю, но покрайней мере я делаю так FILE *f; f=fopen("input.txt","r"); а можно как что бы указывать путь к файлу с консоли, что нибуть такое FILE *f; string bs; cin >> bs; f=fopen("bs","r"); ну или вопще как такое реализовать, подскажите пожалуйста подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.05.2013, 19:40  [ТС]     Класс как стандартный контейнер
Зацените я по быстрому сделал на скорую руку. Конечно функционал убогей чем в std::vector но все же, похож на стандартный вектор, сделал с аллокатором, осталось теперь вторую часть сделать добавить шаблон и typedef-ы и все, профессиональный настоящий класс готов. (хотя в задаче говорилось напишите классы, то есть несколько, я так думаю наверно нужно было и класс итератор создать, но ну его в баню , когда не будь создам мб ...)

Я от проверял все вроде работает как положено.
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
139
140
141
142
143
144
145
146
147
148
149
150
151
class Vector
{
    int siz;
    int* mass;
 
public:
    //class icklyuchenii
    class out_of_range{};
 
    //konctrykotr preobrazovani9
    Vector(int s):siz(s){mass=new int[s];}
    
    //konctryktor kopirovani9
    Vector(Vector& v):siz(v.siz)
    {
        mass=new int[v.siz];
        for(int i=0;i<siz;i++)
            mass[i]=v[i];
    }
    
    //vozvrat razmera size
    int size(){return siz;}
 
    //doctyp bez proverki
    int& operator[](int i){return mass[i];}
    const int& operator[](int i)const{return mass[i];}
 
    //doctyp c proverkoi
    int& at(int i)
    {
        if(i>=0&&i<siz)
            return mass[i];
        else
            throw out_of_range();
    }
 
    const int& at(int i)const
    {
        if(i>=0&&i<siz)
            return mass[i];
        else
            throw out_of_range();
    }
 
    //front() vozvrat pervogo elementa
    int& front(){return mass[0];}
    const int& front()const {return mass[0];}
 
    //vozvrat poclednego elementa
    int& back(){return mass[siz-1];}
    const int& back()const {return mass[siz-1];}
 
    //begin()
    int* begin(){return mass;}
    //end()
    int* end(){return mass+siz;}
 
    //ctekovue operacii
    //dobavlenie v konec
    void push_back(const int& x)
    {
        siz=siz+1;
        int* yk=new int[siz];
        for(int i=0;i<siz-1;i++)
            yk[i]=mass[i];
 
        int* del=mass;
        mass=yk;
        
        delete del;//vucvobojdenie pam9ti
        mass[siz-1]=x;
    }
 
    //vuvod Vector
    void print()
    {
        for(int i=0;i<siz;i++)
            cout <<mass[i]<<' ';
        cout <<endl;
    }
 
    //ydalenie poclednego elementa
    void pop_back()
    {
        if(siz==0)
            throw out_of_range();
 
        siz-=1;
        int* yk=new int[siz];//vudel9em mecto pod novui macciv
        for(int i=0;i<siz;i++)
        {
            yk[i]=mass[i];
        }
 
        int* del=mass;
        mass=yk;
        delete del;//ocvobojdenie pam9ti
    }
 
    //operacii xarakternue dl9 cpickov
 
    int* insert(int* ptr, int znach)
    {
        siz+=1;
        int* yk=new int[siz];
        //poick mecta
        for(int i=0,j=0;j<siz;i++,j++)
        {
            if((mass+i)==ptr)
            {
                //naideno mecto dl9 vctavki
                yk[j]=znach;
                ptr=yk+j;
                i--;
            }
            else
            {
                yk[j]=mass[i];
            }
        }
        int* del=mass;
        mass=yk;
        delete del;
        return ptr;
    }
 
    int* erase(int* ptr)
    {
        siz-=1;
        int* yk=new int[siz];
        //poick elementa dl9 ydaleni9
        for(int i=0,j=0;i<siz+1;i++,j++)
        {
            if((mass+i)==ptr)
            {
                ptr=yk+j;
                j--;
                continue;
            }
            else
            {
                yk[j]=mass[i];
            }
        }
 
        int* del=mass;
        mass=yk;
        delete del;
        return ptr;
    }
};
Добавлено через 1 минуту
хотел еще функцию clean() добавить да забыл, ну там сложности удалить все элементы я думаю нету.

Добавлено через 2 часа 7 минут
Я уже и шаблон примитивный сделал. Кто скажет что я про!?
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
template <typename T>
class Vector
{
    int siz;
    T* mass;
 
public:
    typedef T* iter;
    typedef T& value;
 
    //class icklyuchenii
    class out_of_range{};
 
    //konctrykotr preobrazovani9
    Vector(int s):siz(s){mass=new T[s];}
    
    //konctryktor kopirovani9
    Vector(Vector& v):siz(v.siz)
    {
        mass=new T[v.siz];
        for(int i=0;i<siz;i++)
            mass[i]=v[i];
    }
    
    //vozvrat razmera size
    int size(){return siz;}
 
    //doctyp bez proverki
    value operator[](int i){return mass[i];}
    const T& operator[](int i)const{return mass[i];}
 
    //doctyp c proverkoi
    value at(int i)
    {
        if(i>=0&&i<siz)
            return mass[i];
        else
            throw out_of_range();
    }
 
    const value at(int i)const
    {
        if(i>=0&&i<siz)
            return mass[i];
        else
            throw out_of_range();
    }
 
    //front() vozvrat pervogo elementa
    value front(){return mass[0];}
    const T& front()const {return mass[0];}
 
    //vozvrat poclednego elementa
    value back(){return mass[siz-1];}
    const T& back()const {return mass[siz-1];}
 
    //begin()
    iter begin(){return mass;}
    //end()
    iter end(){return mass+siz;}
 
    //ctekovue operacii
    //dobavlenie v konec
    void push_back(const T& x)
    {
        siz=siz+1;
        T* yk=new T[siz];
        for(int i=0;i<siz-1;i++)
            yk[i]=mass[i];
 
        T* del=mass;
        mass=yk;
        
        delete del;//vucvobojdenie pam9ti
        mass[siz-1]=x;
    }
 
    //vuvod Vector
    void print()
    {
        for(int i=0;i<siz;i++)
            cout <<mass[i]<<' ';
        cout <<endl;
    }
 
    //ydalenie poclednego elementa
    void pop_back()
    {
        if(siz==0)
            throw out_of_range();
 
        siz-=1;
        T* yk=new T[siz];//vudel9em mecto pod novui macciv
        for(int i=0;i<siz;i++)
        {
            yk[i]=mass[i];
        }
 
        T* del=mass;
        mass=yk;
        delete del;//ocvobojdenie pam9ti
    }
 
    //operacii xarakternue dl9 cpickov
 
    iter insert(iter ptr, T znach)
    {
        siz+=1;
        T* yk=new T[siz];
        //poick mecta
        for(int i=0,j=0;j<siz;i++,j++)
        {
            if((mass+i)==ptr)
            {
                //naideno mecto dl9 vctavki
                yk[j]=znach;
                ptr=yk+j;
                i--;
            }
            else
            {
                yk[j]=mass[i];
            }
        }
        T* del=mass;
        mass=yk;
        delete del;
        return ptr;
    }
 
    iter erase(iter ptr)
    {
        siz-=1;
        int* yk=new int[siz];
        //poick elementa dl9 ydaleni9
        for(int i=0,j=0;i<siz+1;i++,j++)
        {
            if((mass+i)==ptr)
            {
                ptr=yk+j;
                j--;
                continue;
            }
            else
            {
                yk[j]=mass[i];
            }
        }
 
        T* del=mass;
        mass=yk;
        delete del;
        return ptr;
    }
};
 
Текущее время: 18:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru