|
@@ -0,0 +1,96 @@
|
|
|
+#include <iostream>
|
|
|
+#include <string.h>
|
|
|
+
|
|
|
+
|
|
|
+class Vector
|
|
|
+{
|
|
|
+ private:
|
|
|
+ int* data;
|
|
|
+
|
|
|
+ public:
|
|
|
+ int lenght;
|
|
|
+
|
|
|
+ Vector()
|
|
|
+ {
|
|
|
+ lenght = 0;
|
|
|
+ data = new int[lenght];
|
|
|
+ }
|
|
|
+
|
|
|
+ Vector(Vector &v)
|
|
|
+ {
|
|
|
+ lenght = v.lenght;
|
|
|
+ data = new int[lenght];
|
|
|
+ memcpy(data, v.data, lenght*4);
|
|
|
+ }
|
|
|
+
|
|
|
+ void add(int value)
|
|
|
+ {
|
|
|
+ int* next_data = new int[lenght+1];
|
|
|
+ memcpy(next_data, data, lenght*4);
|
|
|
+ next_data[lenght] = value;
|
|
|
+ delete[] data;
|
|
|
+ data = next_data;
|
|
|
+ lenght++;
|
|
|
+ }
|
|
|
+
|
|
|
+ void add(int value, int index)
|
|
|
+ {
|
|
|
+ if (index >= lenght)
|
|
|
+ throw "Index bigger then lenght";
|
|
|
+ int* next_data = new int[lenght+1];
|
|
|
+ memcpy(next_data, data, index*4);
|
|
|
+ next_data[index] = value;
|
|
|
+ memcpy(next_data+index+1, data+index, (lenght-index)*4);
|
|
|
+ delete[] data;
|
|
|
+ data = next_data;
|
|
|
+ lenght++;
|
|
|
+ }
|
|
|
+
|
|
|
+ int pop()
|
|
|
+ {
|
|
|
+ int* next_data = new int[lenght-1];
|
|
|
+ int value = data[lenght-1];
|
|
|
+ memcpy(next_data, data, (lenght-1)*4);
|
|
|
+ delete[] data;
|
|
|
+ data = next_data;
|
|
|
+ lenght--;
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+
|
|
|
+ int pop(int index)
|
|
|
+ {
|
|
|
+ if (index >= lenght)
|
|
|
+ throw "Index bigger then lenght";
|
|
|
+ int* next_data = new int[lenght-1];
|
|
|
+ int value = data[index];
|
|
|
+ memcpy(next_data, data, index*4);
|
|
|
+ memcpy(next_data+index, data+index+1, (lenght-index-1)*4);
|
|
|
+ delete[] data;
|
|
|
+ data = next_data;
|
|
|
+ lenght--;
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+
|
|
|
+ int operator[](int index)
|
|
|
+ {
|
|
|
+ if (index >= lenght)
|
|
|
+ throw "Index bigger then lenght";
|
|
|
+ return data[index];
|
|
|
+ }
|
|
|
+
|
|
|
+ friend std::ostream &operator <<(std::ostream &os, Vector &v)
|
|
|
+ {
|
|
|
+ os << '[';
|
|
|
+ for(int i = 0; i<v.lenght-1; i++)
|
|
|
+ {
|
|
|
+ os << v.data[i] << ',';
|
|
|
+ }
|
|
|
+ os << v.data[v.lenght-1] << ']';
|
|
|
+ return os;
|
|
|
+ }
|
|
|
+
|
|
|
+ ~Vector()
|
|
|
+ {
|
|
|
+ delete[] data;
|
|
|
+ }
|
|
|
+};
|