From 65f6397bb288ab3a8313e26259d02df43f7e1454 Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev <68247567+stoychoX@users.noreply.github.com> Date: Tue, 12 Apr 2022 20:13:46 +0300 Subject: Add files via upload --- pract KN/week8/Vector.cpp | 90 +++++++++++++++++++++++++++++++++++++++++++++++ pract KN/week8/Vector.h | 27 ++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 pract KN/week8/Vector.cpp create mode 100644 pract KN/week8/Vector.h (limited to 'pract KN') diff --git a/pract KN/week8/Vector.cpp b/pract KN/week8/Vector.cpp new file mode 100644 index 0000000..b288e12 --- /dev/null +++ b/pract KN/week8/Vector.cpp @@ -0,0 +1,90 @@ +#include "Vector.h" + +void Vector::resize() +{ + capacity *= 2; + int* newArr = new int[capacity]; + for (size_t i = 0; i < size; i++) + { + newArr[i] = arr[i]; + } + free(); + arr = newArr; +} + +void Vector::free() +{ + delete[] arr; +} + +void Vector::copyFrom(const Vector& other) +{ + size = other.size; + capacity = other.capacity; + arr = new int[capacity]; + for (int i = 0; i < size; i++) + { + arr[i] = other.arr[i]; + } +} + +Vector::Vector() +{ + arr = new int[2]; + capacity = 2; + size = 0; +} + +Vector::Vector(const Vector& other) +{ + copyFrom(other); +} + +Vector& Vector::operator=(const Vector& other) +{ + if (this != &other) { + free(); + copyFrom(other); + } + return *this; +} + +Vector::~Vector() +{ + free(); +} + +void Vector::push_back(const int element) +{ + if (size < capacity) { + arr[size] = element; + size++; + } + else + { + resize(); + push_back(element); + } +} + +int Vector::getSize() const +{ + return size; +} + +int& Vector::operator[](const int index) +{ + if (index >= 0 && index < size) { + return arr[index]; + } + throw std::exception("Out of range exception"); + +} + +const int& Vector::operator[](int index) const +{ + if (index >= 0 && index < size) { + return arr[index]; + } + throw std::exception("Out of range exception"); +} diff --git a/pract KN/week8/Vector.h b/pract KN/week8/Vector.h new file mode 100644 index 0000000..db7760d --- /dev/null +++ b/pract KN/week8/Vector.h @@ -0,0 +1,27 @@ +#pragma once +#include +class Vector +{ + int* arr = nullptr; + int size; + int capacity; + + void resize(); + void free(); + void copyFrom(const Vector&); + +public: + Vector(); + Vector(const Vector&); + Vector& operator = (const Vector&); + ~Vector(); + + void push_back(const int); + int getSize()const; + int& operator [](const int); + const int& operator [](int)const ; + + + +}; + -- cgit v1.3.1-23-gd82d