123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #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;
- }
- };
|