#include #include using namespace std; #include "Vector.h" Vector::Vector():capacity(0), size(0), arr(0){} Vector::Vector(int capacity): capacity(capacity), size(0), arr(new int[capacity]){ for (int i = 0; i < size; i++) arr[i] = 0; } Vector::Vector(const Vector& other): capacity(other.capacity), size(other.size), arr(new int[capacity]){ for (int i = 0; i < capacity; i++) (i < size) ? arr[i] = other.arr[i] : arr[i]=0; } Vector::Vector(int* arr, int size): capacity(size), size(size), arr(new int[capacity]){ for(int i = 0; i < size; i++) this->arr[i] = arr[i]; } Vector::~Vector(){ delete []arr; } int Vector::getSize() const{ return size; } void Vector::push_back(int newElement){ if (size == capacity){ int* tmp = arr; arr = new int[capacity += 10]; for(int i = 0; i < capacity; i++) (i < size) ? arr[i] = tmp[i] : arr[i] = 0; delete [] tmp; arr[size++] = newElement; }else arr[size++] = newElement; } int& Vector::operator[](const int& index){ if (index < 0 || index > size) throw outOfBoundsException(); return arr[index]; } int Vector::operator[](const int& index) const{ if (index < 0 || index > size) throw outOfBoundsException(); return arr[index]; } const Vector& Vector::operator=(const Vector& other){ if (this != &other){ size = other.size; capacity = other.capacity; delete [] arr; arr = new int[size]; for (int i = 0; i < size; i++ ) arr[i] = other[i]; } return *this; } ostream& operator<<(ostream& os, const Vector& vec){ string tmp; os << '['; for (int i = 0; i < vec.getSize(); i++) os << vec[i] << " "; return os << ']'; }