View difference between Paste ID: tPxHyn88 and NDh5Ayug
SHOW: | | - or go back to the newest paste.
1
#include <iostream>
2
3
using namespace std;
4
5
template<typename T>
6
class Vector
7
{
8
private:
9
    T *Array;
10
    int Size;
11
    int maxSize;
12
public:
13
    Vector()
14
    {
15
        Array = NULL;
16
        Size = 0;
17
        maxSize = 1;
18
    }
19
20
    ~Vector()
21
    {
22
	delete[] Array;
23
    }
24
25
    Vector(int n)
26
    {
27
        Size = n;
28
        Array = new T[n];
29
        maxSize = n * 2;
30
    }
31
32
    Vector(const Vector<T> &Construct)
33
    {
34
        Array = new T[Construct.maxSize];
35
        int i = 0;
36
        while(i < Construct.Size)
37
        {
38
            Array[i] = Construct.Array[i];
39
            i++;
40
        }
41
42
        Size = Construct.Size;
43
        maxSize = Construct.maxSize;
44
    }
45
46
    int Lenght()
47
    {
48
        return Size;
49
    }
50
51
    void Push_back(T Value)
52
    {
53
        if(Size == maxSize)
54
        {
55
            maxSize = maxSize * 2;
56
            T *cashArray = new T[maxSize];
57
58
            int i = 0;
59
            while(i < Size)
60
            {
61
                cashArray[i] = Array[i];
62
                i++;
63
            }
64
            delete[] Array;
65
66
            Array = cashArray;
67
            delete[] cashArray;
68
        }
69
        Array[Size] = Value;
70
        Size++;
71
    }
72
73
    void Pop_back()
74
    {
75
        if(Size > 0)
76
        {
77
            T *cashArray = new T[maxSize];
78
79
            int i = 0;
80
            while(i < Size-1)
81
            {
82
                cashArray[i] = Array[i];
83
                i++;
84
            }
85
            delete[] Array;
86-
        else
86+
87
            Array = cashArray;
88-
            return;
88+
89
            Size--;
90
        }
91
    }
92
93
    void Reserve(int border)
94
    {
95
        T *cashArray = new T[border];
96
97
        int i = 0;
98
        while(i < border)
99
        {
100
            cashArray[i] = Array[i];
101
            i++;
102
        }
103
        delete[] Array;
104
105
        Array[i] = cashArray[i];
106
107
        Size = border;
108
    }
109
110
    void Resize(int FirstB, int SecondB)
111
    {
112
        if(FirstB > SecondB) swap(FirstB, SecondB);
113
114
        FirstB--;
115
        int newSize = SecondB - FirstB;
116
        if(Size - SecondB < 0) newSize = Size - FirstB;
117
        T *cashArray = new T[newSize];
118
119
        int i = 0;
120
        while(i < newSize)
121
        {
122
            cashArray[i] = Array[FirstB];
123
            i++;
124
            FirstB++;
125
        }
126
        delete[] Array;
127
128
        Array = cashArray;
129
130
        Size = newSize;
131
    }
132
133
    T& operator[](int index)
134
    {
135
        return Array[index];
136
    }
137
};