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

Перегрузить операции в стеке и очереди - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Число трехбуквенных слов-палиндромов http://www.cyberforum.ru/cpp-beginners/thread294311.html
Написать программу, считывающую текстовый файл (TEST.txt) и выводящую на экран число трехбуквенных слов-палиндромов (например, "aga") в файле. Добавлено через 3 минуты Вот что я написал, но она...
C++ порівняльний аналіз методів сортування одномірних масивів Товарищи программисты...помогите, пожалуйста! у меня такое задание, кто сможет разобраться, сделать, помогите, бо сама я не очень понимаю, что нужно делать( Розробка програми для порівняльного... http://www.cyberforum.ru/cpp-beginners/thread294309.html
C++ FreeConsole
Здравствуйте господа програмисты!!! как отследить нажатие клавиши?допустим имеем вот это- #include<iostream> #include<windows.h> #include<conio.h> using namespace std; int main() { ...
C++ Определить кольцо с центром в начале координат, которое содержит все точки.
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, х2, y2, x3, y3, и т.д. Определить кольцо с центром в...
C++ Найти точные квадраты в двумерном массиве http://www.cyberforum.ru/cpp-beginners/thread294287.html
Нужно определить, есть ли среди элементов квадратной матрицы точные квадраты, а если есть - вывести на экран и указать их позицию в матрице. #include <iostream.h> #include <conio.h> #include...
C++ Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен. Дана последовательность действительных чисел a1, a2, ..., an. Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен. подробнее

Показать сообщение отдельно
максим)
2 / 2 / 0
Регистрация: 02.10.2010
Сообщений: 36

Перегрузить операции в стеке и очереди - C++

12.05.2011, 21:19. Просмотров 363. Ответов 2
Метки (Все метки)

мне нужно перегрузить операции в стэке и очереде, это я знаю как, а вот как написать стэк и очередь, без понятия, из стандартных шаблонов брать мне нельзя, вот вектор-шаблон который я написал...

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
156
157
158
159
160
161
162
163
164
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
 
 
using namespace std;
 
template <class _Tp>
class Vector
{
public: friend ostream& operator <<(ostream&,  Vector<_Tp>&);
        typedef _Tp value_type;
        typedef value_type* pointer;
protected:
        pointer* start;
        pointer* finish;
        pointer* end_of_storage;
 
 
public:
        Vector(int n, unsigned int max_capacity = 0) : start(0), finish(0), end_of_storage(0)
        {
                if (n > max_capacity)
                        max_capacity = n+1;
                start = new pointer[max_capacity];
                finish = start + n;
                end_of_storage =start + max_capacity;
 
                for (int i = 0; i<size(); i++)
                        start[i] = new value_type;
        }
        Vector(void) : start(new pointer[1]), finish(start), end_of_storage(start+1) {}
        Vector(const Vector<_Tp>& other)
        {
                start = new pointer[other.capacity()];
                finish = start + other.size();
                end_of_storage =start + other.capacity();
 
                for (int i = 0; i<size(); i++)
                        start[i] = new value_type(other[i]);
        }
        value_type& push_back(const value_type value)
        {
                if (!(finish < end_of_storage))
                        reserve(capacity()+2);
                *finish = new value_type(value);
                finish++;
        }
        void reserve(int new_capacity)
        {
                pointer* _newstart = new pointer[new_capacity];
                int new_size = (size()>new_capacity)?new_capacity:size();
                for (int i = 0; i<new_size; i++)
                        _newstart[i] = start[i];
                delete [] start;
                start = _newstart;
                finish = start + new_size;
                end_of_storage = _newstart + new_capacity;
        }
        friend Vector operator -(Vector& p, Vector& x)
        { //ia?aa?ocea nei?aiey aaeoi?ia
           int max;
           max=(p.size()>x.size())? p.size():x.size();
           Vector other(max);
           for(int i=0; i<max; i++)
              other[i]=p[i]-x[i];
           return other;
       }
       friend Vector operator ==(Vector& p, Vector& x)
        {
                   int flag=0,length;
           if (p.size()==x.size()){
            length=p.size();
             for(int i=0; i<length; i++)
             if (p[i]==x[i]) flag++;
           }
           if (flag==length)
           cout<<" Matrici Ravni ";
           else cout<<" Ne rivni ";
           getch();
           return 0 ;
       }
       friend Vector operator -(Vector& p, double x)
        { //ia?aa?ocea nei?aiey aaeoi?a e ?enea
           int max=p.size();
           Vector other(max);
           for(int i=0; i<max; i++)
              other[i]=p[i]-x;
           return other;
       }
        Vector<_Tp> operator= (const Vector<_Tp>& other)
        {
                if (this!=&other)
                {
                        if (start!=0)
                                delete start;
                        start = new pointer[other.capacity()];
                        finish = start + other.size();
                        end_of_storage =start + other.capacity();
 
                        for (int i = 0; i<size(); i++)
                                start[i] = new value_type(other[i]);
                }
                return *this;
        }
        value_type& operator[](unsigned int n) const { return *(start[n]); }
        value_type& operator[](unsigned int n) { return *(start[n]); }
 
        value_type& at(int n) const { return *(start[n]); }
        value_type& at(int n) { return *(start[n]); }
 
        unsigned int size() const { return (finish - start); }
        unsigned int capacity() const { return (end_of_storage - start); }
 
        ~Vector()
        {
                for (int i=0; i<size(); i++)
                        delete start[i];
                delete [] start;
        }
};
int main()
{
      double X=5;
        Vector<char> C;
        Vector<double> A,B,D;
        for (int i=0; i<3; i++){
          A.push_back(i);
          B.push_back(i);
        }
        C.push_back('a');
        C.push_back('b');
        C.push_back('c');
        cout<<" Char vector :"<<endl;
         for (int i=0; i<C.size(); i++)
                cout <<  C[i]<<" ";
        cout << endl;
        cout<<" Vector A :" <<endl;
        for (int i=0; i<A.size(); i++)
                cout <<  A[i]<<" ";
        cout << endl;
        cout<<" Vector B :"<<endl;
        for (int i=0; i<B.size(); i++)
                cout <<  B[i]<<" ";
        cout<<endl;
        cout<<" Vector D=A-B :"<<endl;
        D=A-B;
        for (int i=0; i<D.size(); i++)
                cout <<  D[i]<<" ";
        cout << endl;
        cout<<" Vector D= D -double :"<<endl;
        D=D-X;
        for (int i=0; i<D.size(); i++)
                cout <<  D[i]<<" ";
        cout << endl;
        cout<<" Proverka A==B ";
        A==B;
        getch();
 
        return 0;
}
Добавлено через 2 минуты
помогите если можно. или скажите где хорошо написано про шаблоны , огромное спс заранее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru