From 1a06d0ae7e27caa08a67d2173164ad6a22a1fbaa Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 10:46:26 +0300 Subject: [PATCH 01/65] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33d3dfd..b21623d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/justcppdev/vector_example.svg?branch=master)](https://travis-ci.org/justcppdev/vector_example) +[![Build Status](https://travis-ci.org/ilya41299/vector_example.svg?branch=master)](https://travis-ci.org/ilya41299/vector_example) ``` cmake -H. -B_builds -DBUILD_TESTS=ON From 5782fed42e034057b8bccfb4c68b7623f8d1d735 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 12:42:19 +0300 Subject: [PATCH 02/65] Update vector.cpp --- sources/vector.cpp | 133 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 129 insertions(+), 4 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index e1a2561..80bc1f6 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -1,46 +1,153 @@ #include #include -#include "vector.hpp" +class vector_t +{ +private: + int * elements_; + std::size_t size_; + std::size_t capacity_; +public: + vector_t(); + vector_t(vector_t const & other); + vector_t & operator =(vector_t const & other); + ~vector_t(); + + std::size_t size() const; + std::size_t capacity() const; + + void push_back(int value); + void pop_back(); + + int & operator [](std::size_t index); + int operator [](std::size_t index) const; + + bool operator ==(vector_t const & other) const; +}; vector_t::vector_t() { + int * elements_ = nullptr; + std::size_t size_ = 0; + std::size_t capacity_ = 1; } vector_t::vector_t(vector_t const & other) { + size_ = other.size_; + capacity_= other.capacity; + elements_ = new int [capacity_]; + for (std::size_t i = 0; i < size_; ++i) + { + elements_[i] = other.elements_[i]; + } } vector_t & vector_t::operator =(vector_t const & other) { + if (this != &other) + { + delete[] elements_; + size_ = other.size; + capacity_ = other.capacity_; + elements_ = new int[other.capacity_]; + for (std::size_t i = 0; i < size_; i++) + { + elements_[i] = other.elements_[i]; + } + } return *this; } bool vector_t::operator ==(vector_t const & other) const { - return false; + if (size_ != other.size_) + { + for (std::size_t i = 0; i < size_; i++) + { + if (elements_[i] != other.elements_[i]) + { + return false; + } + } + return true; + } + else return false; } vector_t::~vector_t() { + delete[] elements_; + capacity_ = 1; + size_ = 0; } std::size_t vector_t::size() const { - return 0; + return 0; } std::size_t vector_t::capacity() const { - return 0; + return 0; } void vector_t::push_back(int value) { + if (size_ = 0) + { + size_ = 1; + capacity_ = 1; + elements_ = new int[capacity_]; + elements_[0] = value; + } + else if (size_ == capacity_) + { + int * mas; + mas = new int[size_]; + for (std::size_t i = 0; i < size_; i++) + { + mas[i] = elements_[i]; + } + delete [] elements_; + capacity_ *= 2; + elements_ = new int [capacity_]; + + for (std::size_t i = 0; i < size_; i++) + { + elements_[i] = mas[i]; + } + delete[] mas; + size_++; + elements_[size_] = value; + } + else + { + size_++; + elements_[size_] = value; + } } void vector_t::pop_back() { + size_--; + if (size_== 0 || size_ * 4 == capacity_) + { + int *mas; + mas = new int[size_]; + for (std::size_t i = 0; i < size_; i++) + { + mas[i] = elements_[i]; + } + delete[] elements_; + capacity_ = capacity_/2; + elements_ = new int[capacity_]; + for (std::size_t i = 0; i < size_; i++) + { + elements_[i] = mas[i]; + } + delete[] mas; + } } int & vector_t::operator [](std::size_t index) @@ -55,5 +162,23 @@ int vector_t::operator [](std::size_t index) const bool operator !=(vector_t const & lhs, vector_t const & rhs) { + if (lhs == rhs) + { + return false; + } return true; } + +vector_t::~vector_t() +{ + delete[] elements_; + capacity_ = 1; + size_ = 0; +} + + +int main() +{ + return 0; +} + From f684adf9fff8a79fa2f2445686f397e325e09f9c Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 13:00:44 +0300 Subject: [PATCH 03/65] Update vector.cpp --- sources/vector.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 80bc1f6..75a85af 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -35,7 +35,7 @@ vector_t::vector_t() vector_t::vector_t(vector_t const & other) { size_ = other.size_; - capacity_= other.capacity; + capacity_= other.capacity_; elements_ = new int [capacity_]; for (std::size_t i = 0; i < size_; ++i) { @@ -48,7 +48,7 @@ vector_t & vector_t::operator =(vector_t const & other) if (this != &other) { delete[] elements_; - size_ = other.size; + size_ = other.size_; capacity_ = other.capacity_; elements_ = new int[other.capacity_]; for (std::size_t i = 0; i < size_; i++) @@ -78,8 +78,6 @@ bool vector_t::operator ==(vector_t const & other) const vector_t::~vector_t() { delete[] elements_; - capacity_ = 1; - size_ = 0; } std::size_t vector_t::size() const @@ -94,7 +92,7 @@ std::size_t vector_t::capacity() const void vector_t::push_back(int value) { - if (size_ = 0) + if (size_ == 0) { size_ = 1; capacity_ = 1; @@ -169,14 +167,6 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) return true; } -vector_t::~vector_t() -{ - delete[] elements_; - capacity_ = 1; - size_ = 0; -} - - int main() { return 0; From f0b8085461e92bb0da016e06344f9be5c03b0259 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 13:06:32 +0300 Subject: [PATCH 04/65] Update vector.cpp --- sources/vector.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 75a85af..293ab11 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -166,9 +166,3 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } return true; } - -int main() -{ - return 0; -} - From fb4d08f03d3dc2a62b7982b3f0f1ff33e91f77cd Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 13:21:02 +0300 Subject: [PATCH 05/65] Update vector.cpp --- sources/vector.cpp | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 293ab11..7d8eb0a 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -29,17 +29,17 @@ vector_t::vector_t() { int * elements_ = nullptr; std::size_t size_ = 0; - std::size_t capacity_ = 1; + std::size_t capacity_ = 0; } vector_t::vector_t(vector_t const & other) { size_ = other.size_; - capacity_= other.capacity_; - elements_ = new int [capacity_]; + capacity_ = other.capacity_; + elements_ = new int[capacity_]; for (std::size_t i = 0; i < size_; ++i) { - elements_[i] = other.elements_[i]; + elements_[i] = other.elements_[i]; } } @@ -51,7 +51,7 @@ vector_t & vector_t::operator =(vector_t const & other) size_ = other.size_; capacity_ = other.capacity_; elements_ = new int[other.capacity_]; - for (std::size_t i = 0; i < size_; i++) + for (std::size_t i = 0; i < size_; i++) { elements_[i] = other.elements_[i]; } @@ -61,11 +61,11 @@ vector_t & vector_t::operator =(vector_t const & other) bool vector_t::operator ==(vector_t const & other) const { - if (size_ != other.size_) + if (size_ != other.size_) { - for (std::size_t i = 0; i < size_; i++) + for (std::size_t i = 0; i < size_; i++) { - if (elements_[i] != other.elements_[i]) + if (elements_[i] != other.elements_[i]) { return false; } @@ -92,25 +92,24 @@ std::size_t vector_t::capacity() const void vector_t::push_back(int value) { - if (size_ == 0) + if (size_ == 0) { size_ = 1; capacity_ = 1; elements_ = new int[capacity_]; elements_[0] = value; } - else if (size_ == capacity_) + else if (size_ == capacity_) { int * mas; mas = new int[size_]; - for (std::size_t i = 0; i < size_; i++) + for (std::size_t i = 0; i < size_; i++) { mas[i] = elements_[i]; } - delete [] elements_; + delete[] elements_; capacity_ *= 2; - elements_ = new int [capacity_]; - + elements_ = new int[capacity_]; for (std::size_t i = 0; i < size_; i++) { elements_[i] = mas[i]; @@ -119,7 +118,7 @@ void vector_t::push_back(int value) size_++; elements_[size_] = value; } - else + else { size_++; elements_[size_] = value; @@ -129,7 +128,7 @@ void vector_t::push_back(int value) void vector_t::pop_back() { size_--; - if (size_== 0 || size_ * 4 == capacity_) + if (size_ == 0 || size_ * 4 == capacity_) { int *mas; mas = new int[size_]; @@ -138,7 +137,7 @@ void vector_t::pop_back() mas[i] = elements_[i]; } delete[] elements_; - capacity_ = capacity_/2; + capacity_ = capacity_ / 2; elements_ = new int[capacity_]; for (std::size_t i = 0; i < size_; i++) { From 0734cc061637abf1026155875b1ae276dbddb162 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 13:29:07 +0300 Subject: [PATCH 06/65] Update vector.cpp --- sources/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 7d8eb0a..70a7127 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -154,7 +154,7 @@ int & vector_t::operator [](std::size_t index) int vector_t::operator [](std::size_t index) const { - return 0; + return elements_[0]; } bool operator !=(vector_t const & lhs, vector_t const & rhs) From 55d8ff385101cb867aad3aaed8ade22683352f3e Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 15:38:57 +0300 Subject: [PATCH 07/65] Update vector.cpp --- sources/vector.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 70a7127..287daf0 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -115,13 +115,13 @@ void vector_t::push_back(int value) elements_[i] = mas[i]; } delete[] mas; - size_++; elements_[size_] = value; + size_++; } else { - size_++; elements_[size_] = value; + size_++; } } From 1c95c1bd19c39248d0f08c528c7f2cc189c26cb7 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 16:34:48 +0300 Subject: [PATCH 08/65] Update vector.cpp --- sources/vector.cpp | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 287daf0..c9e2db2 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -1,29 +1,3 @@ -#include -#include - -class vector_t -{ -private: - int * elements_; - std::size_t size_; - std::size_t capacity_; -public: - vector_t(); - vector_t(vector_t const & other); - vector_t & operator =(vector_t const & other); - ~vector_t(); - - std::size_t size() const; - std::size_t capacity() const; - - void push_back(int value); - void pop_back(); - - int & operator [](std::size_t index); - int operator [](std::size_t index) const; - - bool operator ==(vector_t const & other) const; -}; vector_t::vector_t() { From 89c597a2e4a5ee41576a12ad86a8141073415691 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 16:35:59 +0300 Subject: [PATCH 09/65] Update vector.cpp --- sources/vector.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index c9e2db2..a541b31 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -1,9 +1,9 @@ vector_t::vector_t() { - int * elements_ = nullptr; - std::size_t size_ = 0; - std::size_t capacity_ = 0; + * elements_ = nullptr; + size_ = 0; + capacity_ = 0; } vector_t::vector_t(vector_t const & other) From 55879f6ab9816975619ae1bfa0363701108c13a0 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 16:42:30 +0300 Subject: [PATCH 10/65] Update vector.cpp --- sources/vector.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sources/vector.cpp b/sources/vector.cpp index a541b31..095f880 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -1,3 +1,7 @@ +#include +#include + +#include "vector.hpp" vector_t::vector_t() { From c0290d833b311f67abf6e80437c10c8dbe44cb86 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 16:46:34 +0300 Subject: [PATCH 11/65] Update vector.cpp --- sources/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 095f880..4a12e61 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -5,7 +5,7 @@ vector_t::vector_t() { - * elements_ = nullptr; + elements_ = nullptr; size_ = 0; capacity_ = 0; } From d92d2433f29fe49696cc55ed3b95f48009de1d94 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 17:01:30 +0300 Subject: [PATCH 12/65] Update vector.cpp --- sources/vector.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 4a12e61..99f0ed8 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -60,12 +60,12 @@ vector_t::~vector_t() std::size_t vector_t::size() const { - return 0; + return size_; } std::size_t vector_t::capacity() const { - return 0; + return capacity_; } void vector_t::push_back(int value) From 4495aa3712344a14ea20a10e05e06e4322957973 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 17:08:18 +0300 Subject: [PATCH 13/65] Update vector.cpp --- sources/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 99f0ed8..65d40eb 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -39,7 +39,7 @@ vector_t & vector_t::operator =(vector_t const & other) bool vector_t::operator ==(vector_t const & other) const { - if (size_ != other.size_) + if (size_ = other.size_) { for (std::size_t i = 0; i < size_; i++) { From 179f7b50c81835144c8b7e0f0ea3808c22a26b0b Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 16 Mar 2018 17:15:02 +0300 Subject: [PATCH 14/65] Update vector.cpp --- sources/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index 65d40eb..b57ba89 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -39,7 +39,7 @@ vector_t & vector_t::operator =(vector_t const & other) bool vector_t::operator ==(vector_t const & other) const { - if (size_ = other.size_) + if (size_ == other.size_) { for (std::size_t i = 0; i < size_; i++) { From 38d1f5aa79c4d118a02466effb13300e012181b9 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 18:04:02 +0300 Subject: [PATCH 15/65] Update vector.cpp --- sources/vector.cpp | 144 --------------------------------------------- 1 file changed, 144 deletions(-) diff --git a/sources/vector.cpp b/sources/vector.cpp index b57ba89..8b13789 100644 --- a/sources/vector.cpp +++ b/sources/vector.cpp @@ -1,145 +1 @@ -#include -#include -#include "vector.hpp" - -vector_t::vector_t() -{ - elements_ = nullptr; - size_ = 0; - capacity_ = 0; -} - -vector_t::vector_t(vector_t const & other) -{ - size_ = other.size_; - capacity_ = other.capacity_; - elements_ = new int[capacity_]; - for (std::size_t i = 0; i < size_; ++i) - { - elements_[i] = other.elements_[i]; - } -} - -vector_t & vector_t::operator =(vector_t const & other) -{ - if (this != &other) - { - delete[] elements_; - size_ = other.size_; - capacity_ = other.capacity_; - elements_ = new int[other.capacity_]; - for (std::size_t i = 0; i < size_; i++) - { - elements_[i] = other.elements_[i]; - } - } - return *this; -} - -bool vector_t::operator ==(vector_t const & other) const -{ - if (size_ == other.size_) - { - for (std::size_t i = 0; i < size_; i++) - { - if (elements_[i] != other.elements_[i]) - { - return false; - } - } - return true; - } - else return false; -} - -vector_t::~vector_t() -{ - delete[] elements_; -} - -std::size_t vector_t::size() const -{ - return size_; -} - -std::size_t vector_t::capacity() const -{ - return capacity_; -} - -void vector_t::push_back(int value) -{ - if (size_ == 0) - { - size_ = 1; - capacity_ = 1; - elements_ = new int[capacity_]; - elements_[0] = value; - } - else if (size_ == capacity_) - { - int * mas; - mas = new int[size_]; - for (std::size_t i = 0; i < size_; i++) - { - mas[i] = elements_[i]; - } - delete[] elements_; - capacity_ *= 2; - elements_ = new int[capacity_]; - for (std::size_t i = 0; i < size_; i++) - { - elements_[i] = mas[i]; - } - delete[] mas; - elements_[size_] = value; - size_++; - } - else - { - elements_[size_] = value; - size_++; - } -} - -void vector_t::pop_back() -{ - size_--; - if (size_ == 0 || size_ * 4 == capacity_) - { - int *mas; - mas = new int[size_]; - for (std::size_t i = 0; i < size_; i++) - { - mas[i] = elements_[i]; - } - delete[] elements_; - capacity_ = capacity_ / 2; - elements_ = new int[capacity_]; - for (std::size_t i = 0; i < size_; i++) - { - elements_[i] = mas[i]; - } - delete[] mas; - } -} - -int & vector_t::operator [](std::size_t index) -{ - return elements_[0]; -} - -int vector_t::operator [](std::size_t index) const -{ - return elements_[0]; -} - -bool operator !=(vector_t const & lhs, vector_t const & rhs) -{ - if (lhs == rhs) - { - return false; - } - return true; -} From 6ff6feb6626afe3d4b96b8a23ccb2fb527991815 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 18:05:14 +0300 Subject: [PATCH 16/65] Update vector.hpp --- include/vector.hpp | 143 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/include/vector.hpp b/include/vector.hpp index 98dccd3..689e59c 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -1,4 +1,6 @@ #include +#include +#include class vector_t { @@ -25,3 +27,144 @@ class vector_t }; bool operator !=(vector_t const & lhs, vector_t const & rhs); + +vector_t::vector_t() +{ + elements_ = nullptr; + size_ = 0; + capacity_ = 0; +} + +vector_t::vector_t(vector_t const & other) +{ + size_ = other.size_; + capacity_ = other.capacity_; + elements_ = new int[capacity_]; + for (std::size_t i = 0; i < size_; ++i) + { + elements_[i] = other.elements_[i]; + } +} + +vector_t & vector_t::operator =(vector_t const & other) +{ + if (this != &other) + { + delete[] elements_; + size_ = other.size_; + capacity_ = other.capacity_; + elements_ = new int[other.capacity_]; + for (std::size_t i = 0; i < size_; i++) + { + elements_[i] = other.elements_[i]; + } + } + return *this; +} + +bool vector_t::operator ==(vector_t const & other) const +{ + if (size_ == other.size_) + { + for (std::size_t i = 0; i < size_; i++) + { + if (elements_[i] != other.elements_[i]) + { + return false; + } + } + return true; + } + else return false; +} + +vector_t::~vector_t() +{ + delete[] elements_; +} + +std::size_t vector_t::size() const +{ + return size_; +} + +std::size_t vector_t::capacity() const +{ + return capacity_; +} + +void vector_t::push_back(int value) +{ + if (size_ == 0) + { + size_ = 1; + capacity_ = 1; + elements_ = new int[capacity_]; + elements_[0] = value; + } + else if (size_ == capacity_) + { + int * mas; + mas = new int[size_]; + for (std::size_t i = 0; i < size_; i++) + { + mas[i] = elements_[i]; + } + delete[] elements_; + capacity_ *= 2; + elements_ = new int[capacity_]; + for (std::size_t i = 0; i < size_; i++) + { + elements_[i] = mas[i]; + } + delete[] mas; + elements_[size_] = value; + size_++; + } + else + { + elements_[size_] = value; + size_++; + } +} + +void vector_t::pop_back() +{ + size_--; + if (size_ == 0 || size_ * 4 == capacity_) + { + int *mas; + mas = new int[size_]; + for (std::size_t i = 0; i < size_; i++) + { + mas[i] = elements_[i]; + } + delete[] elements_; + capacity_ = capacity_ / 2; + elements_ = new int[capacity_]; + for (std::size_t i = 0; i < size_; i++) + { + elements_[i] = mas[i]; + } + delete[] mas; + } +} + +int & vector_t::operator [](std::size_t index) +{ + return elements_[0]; +} + +int vector_t::operator [](std::size_t index) const +{ + return elements_[0]; +} + +bool operator !=(vector_t const & lhs, vector_t const & rhs) +{ + if (lhs == rhs) + { + return false; + } + return true; +} From c974cac3adb976c77a8d5bc5d7e316c7179d47de Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 18:28:15 +0300 Subject: [PATCH 17/65] Update vector.hpp --- include/vector.hpp | 55 +++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 689e59c..b2a2e45 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -2,10 +2,12 @@ #include #include +template + class vector_t { private: - int * elements_; + T * elements_; std::size_t size_; std::size_t capacity_; public: @@ -26,34 +28,38 @@ class vector_t bool operator ==(vector_t const & other) const; }; -bool operator !=(vector_t const & lhs, vector_t const & rhs); +template +bool operator !=(vector_t const & lhs, vector_t const & rhs); -vector_t::vector_t() +template +vector_t::vector_t() { elements_ = nullptr; size_ = 0; capacity_ = 0; } -vector_t::vector_t(vector_t const & other) +template +vector_t::vector_t(vector_t const & other) { size_ = other.size_; capacity_ = other.capacity_; - elements_ = new int[capacity_]; + elements_ = new T[capacity_]; for (std::size_t i = 0; i < size_; ++i) { elements_[i] = other.elements_[i]; } } -vector_t & vector_t::operator =(vector_t const & other) +template +vector_t & vector_t::operator =(vector_t const & other) { if (this != &other) { delete[] elements_; size_ = other.size_; capacity_ = other.capacity_; - elements_ = new int[other.capacity_]; + elements_ = new T[other.capacity_]; for (std::size_t i = 0; i < size_; i++) { elements_[i] = other.elements_[i]; @@ -62,7 +68,8 @@ vector_t & vector_t::operator =(vector_t const & other) return *this; } -bool vector_t::operator ==(vector_t const & other) const +template +bool vector_t::operator ==(vector_t const & other) const { if (size_ == other.size_) { @@ -78,41 +85,45 @@ bool vector_t::operator ==(vector_t const & other) const else return false; } -vector_t::~vector_t() +template +vector_t::~vector_t() { delete[] elements_; } -std::size_t vector_t::size() const +template +std::size_t vector_t::size() const { return size_; } -std::size_t vector_t::capacity() const +template +std::size_t vector_t::capacity() const { return capacity_; } -void vector_t::push_back(int value) +template +void vector_t::push_back(int value) { if (size_ == 0) { size_ = 1; capacity_ = 1; - elements_ = new int[capacity_]; + elements_ = new T[capacity_]; elements_[0] = value; } else if (size_ == capacity_) { int * mas; - mas = new int[size_]; + mas = new T[size_]; for (std::size_t i = 0; i < size_; i++) { mas[i] = elements_[i]; } delete[] elements_; capacity_ *= 2; - elements_ = new int[capacity_]; + elements_ = new T[capacity_]; for (std::size_t i = 0; i < size_; i++) { elements_[i] = mas[i]; @@ -128,20 +139,21 @@ void vector_t::push_back(int value) } } -void vector_t::pop_back() +template +void vector_t::pop_back() { size_--; if (size_ == 0 || size_ * 4 == capacity_) { int *mas; - mas = new int[size_]; + mas = new T[size_]; for (std::size_t i = 0; i < size_; i++) { mas[i] = elements_[i]; } delete[] elements_; capacity_ = capacity_ / 2; - elements_ = new int[capacity_]; + elements_ = new T[capacity_]; for (std::size_t i = 0; i < size_; i++) { elements_[i] = mas[i]; @@ -150,16 +162,19 @@ void vector_t::pop_back() } } -int & vector_t::operator [](std::size_t index) +template +int & vector_t::operator [](std::size_t index) { return elements_[0]; } -int vector_t::operator [](std::size_t index) const +template +int vector_t::operator [](std::size_t index) const { return elements_[0]; } +template bool operator !=(vector_t const & lhs, vector_t const & rhs) { if (lhs == rhs) From 318b0ea48aeb5ab5ec4dc3cd86d2ba1db86a61b4 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 18:38:44 +0300 Subject: [PATCH 18/65] Update vector.hpp --- include/vector.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index b2a2e45..da2d34f 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -3,7 +3,6 @@ #include template - class vector_t { private: @@ -29,7 +28,7 @@ class vector_t }; template -bool operator !=(vector_t const & lhs, vector_t const & rhs); +bool operator !=(vector_t const & lhs, vector_t const & rhs); template vector_t::vector_t() @@ -40,7 +39,7 @@ vector_t::vector_t() } template -vector_t::vector_t(vector_t const & other) +vector_t::vector_t(vector_t const & other) { size_ = other.size_; capacity_ = other.capacity_; From 181764ff2383c2b12b132b0b3b4019152cab8b34 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 18:42:31 +0300 Subject: [PATCH 19/65] Update vector.cpp --- tests/vector.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 7d2b926..47c6cab 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -5,24 +5,24 @@ TEST_CASE("creating vector") { - vector_t vector; + vector_t vector; REQUIRE( vector.size() == 0 ); REQUIRE( vector.capacity() == 0 ); } TEST_CASE("copying vector") { - vector_t vector; + vector_t vector; vector.push_back(1); - vector_t copy(vector); + vector_t copy(vector); REQUIRE( copy == vector ); } TEST_CASE("assigning vector") { - vector_t vector1; - vector_t vector2; + vector_t vector1; + vector_t vector2; vector1.push_back(1); vector2.push_back(2); @@ -33,8 +33,8 @@ TEST_CASE("assigning vector") TEST_CASE("equaling vector") { - vector_t vector1; - vector_t vector2; + vector_t vector1; + vector_t vector2; vector1.push_back(1); vector2.push_back(1); @@ -47,19 +47,19 @@ TEST_CASE("equaling vector") TEST_CASE("indexing vector") { - vector_t vector; + vector_t vector; vector.push_back(1); REQUIRE( vector[0] == 1 ); - vector_t const copy(vector); + vector_t const copy(vector); REQUIRE( copy[0] == 1 ); } TEST_CASE("pushing elements") { - vector_t vector; + vector_t vector; vector.push_back(1); REQUIRE( vector.size() == 1 ); @@ -84,7 +84,7 @@ TEST_CASE("pushing elements") TEST_CASE("poping elements") { - vector_t vector; + vector_t vector; vector.push_back(1); vector.push_back(2); From f71d3170c386fdd4cc772e45eaf85546c83a0f7d Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 21:27:43 +0300 Subject: [PATCH 20/65] Update vector.hpp --- include/vector.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index da2d34f..c59ec3d 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -28,7 +28,7 @@ class vector_t }; template -bool operator !=(vector_t const & lhs, vector_t const & rhs); +bool operator !=(vector_t const & lhs, vector_t const & rhs); template vector_t::vector_t() @@ -39,7 +39,7 @@ vector_t::vector_t() } template -vector_t::vector_t(vector_t const & other) +vector_t::vector_t(vector_t const & other) { size_ = other.size_; capacity_ = other.capacity_; @@ -174,7 +174,7 @@ int vector_t::operator [](std::size_t index) const } template -bool operator !=(vector_t const & lhs, vector_t const & rhs) +bool operator !=(vector_t const & lhs, vector_t const & rhs) { if (lhs == rhs) { From ac408dda9efe4150655c9e34782eb1f2aa0708f6 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 21:33:23 +0300 Subject: [PATCH 21/65] Update vector.hpp --- include/vector.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/vector.hpp b/include/vector.hpp index c59ec3d..8ae9f16 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -39,7 +39,7 @@ vector_t::vector_t() } template -vector_t::vector_t(vector_t const & other) +vector_t::vector_t(vector_t const & other) { size_ = other.size_; capacity_ = other.capacity_; From cc9ef7a3f802c3b956553267273ab41961524646 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 23:09:09 +0300 Subject: [PATCH 22/65] Update vector.hpp --- include/vector.hpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/vector.hpp b/include/vector.hpp index 8ae9f16..4a171a1 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -17,7 +17,7 @@ class vector_t std::size_t size() const; std::size_t capacity() const; - + T & at(std::size_t index); void push_back(int value); void pop_back(); @@ -182,3 +182,11 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } return true; } +T & at(std::size_t index) +{ + if(index >= size_) + { + throw std::out_of_range("Error"); + } +return (*this)[index]; +} From 707a96adcc3d084412c54679f1a0effd258ac32b Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 23:11:11 +0300 Subject: [PATCH 23/65] Update vector.cpp --- tests/vector.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/vector.cpp b/tests/vector.cpp index 47c6cab..e342705 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -117,3 +117,11 @@ TEST_CASE("poping elements") REQUIRE( vector.size() == 0 ); REQUIRE( vector.capacity() == 1 ); } + + TEST_CASE("error") +{ + vector_t vector; + vector.push_back(4); + vector.push_back(2); + REQUIRE_THROWS_AS(vector.at(3), std::out_of_range); +} From bdda921503bdebfb6a8d64eb668957e7d14de926 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 23:12:18 +0300 Subject: [PATCH 24/65] Update vector.cpp --- tests/vector.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index e342705..6697794 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -123,5 +123,6 @@ TEST_CASE("poping elements") vector_t vector; vector.push_back(4); vector.push_back(2); - REQUIRE_THROWS_AS(vector.at(3), std::out_of_range); + vector.push_back(9); + REQUIRE_THROWS_AS(vector.at(4), std::out_of_range); } From 86d831a1ec4df30202a12bfb5b6071e1f67ae692 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 23:16:36 +0300 Subject: [PATCH 25/65] Update vector.hpp --- include/vector.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/vector.hpp b/include/vector.hpp index 4a171a1..e0370a5 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -182,6 +182,8 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } return true; } + +template T & at(std::size_t index) { if(index >= size_) From 57003292328a75ed671e717af860e64a8aefb6a8 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 22 Mar 2018 23:28:47 +0300 Subject: [PATCH 26/65] Update vector.hpp --- include/vector.hpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index e0370a5..8ea1328 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -17,7 +17,14 @@ class vector_t std::size_t size() const; std::size_t capacity() const; - T & at(std::size_t index); + T & at(std::size_t index) + { + if(index >= size_) + { + throw std::out_of_range("Error"); + } + return (*this)[index]; + } void push_back(int value); void pop_back(); @@ -182,13 +189,3 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } return true; } - -template -T & at(std::size_t index) -{ - if(index >= size_) - { - throw std::out_of_range("Error"); - } -return (*this)[index]; -} From 61229b595aebebb6063e69a97e02a0c918c8c476 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 00:05:35 +0300 Subject: [PATCH 27/65] Update vector.cpp --- tests/vector.cpp | 126 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/tests/vector.cpp b/tests/vector.cpp index 6697794..10753ca 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -126,3 +126,129 @@ TEST_CASE("poping elements") vector.push_back(9); REQUIRE_THROWS_AS(vector.at(4), std::out_of_range); } + +//float + +TEST_CASE("creating vector") +{ + vector_t vector; + REQUIRE( vector.size() == 0 ); + REQUIRE( vector.capacity() == 0 ); +} + +TEST_CASE("copying vector") +{ + vector_t vector; + vector.push_back(1.2); + + vector_t copy(vector); + REQUIRE( copy == vector ); +} + +TEST_CASE("assigning vector") +{ + vector_t vector1; + vector_t vector2; + + vector1.push_back(1.1); + vector2.push_back(2.2); + + vector1 = vector2; + REQUIRE( vector1 == vector2 ); +} + +TEST_CASE("equaling vector") +{ + vector_t vector1; + vector_t vector2; + + vector1.push_back(1.3); + vector2.push_back(1.3); + + REQUIRE( vector1 == vector2 ); + + vector1.push_back(2.3); + REQUIRE( vector1 != vector2 ); +} + +TEST_CASE("indexing vector") +{ + vector_t vector; + + vector.push_back(1.4); + + REQUIRE( vector[0] == 1.4 ); + + vector_t const copy(vector); + REQUIRE( copy[0] == 1.4 ); +} + +TEST_CASE("pushing elements") +{ + vector_t vector; + + vector.push_back(1.1); + REQUIRE( vector.size() == 1 ); + REQUIRE( vector.capacity() == 1 ); + + vector.push_back(2.2); + REQUIRE( vector.size() == 2 ); + REQUIRE( vector.capacity() == 2 ); + + vector.push_back(3.3); + REQUIRE( vector.size() == 3 ); + REQUIRE( vector.capacity() == 4 ); + + vector.push_back(4.1); + REQUIRE( vector.size() == 4 ); + REQUIRE( vector.capacity() == 4 ); + + vector.push_back(5.2); + REQUIRE( vector.size() == 5 ); + REQUIRE( vector.capacity() == 8 ); +} + +TEST_CASE("poping elements") +{ + vector_t vector; + + vector.push_back(1.0); + vector.push_back(2.0); + vector.push_back(3.3); + vector.push_back(4.2); + vector.push_back(5.1); + vector.push_back(6.4); + + vector.pop_back(); + REQUIRE( vector.size() == 5 ); + REQUIRE( vector.capacity() == 8 ); + + vector.pop_back(); + REQUIRE( vector.size() == 4 ); + REQUIRE( vector.capacity() == 8 ); + + vector.pop_back(); + REQUIRE( vector.size() == 3 ); + REQUIRE( vector.capacity() == 8 ); + + vector.pop_back(); + REQUIRE( vector.size() == 2 ); + REQUIRE( vector.capacity() == 4 ); + + vector.pop_back(); + REQUIRE( vector.size() == 1 ); + REQUIRE( vector.capacity() == 2 ); + + vector.pop_back(); + REQUIRE( vector.size() == 0 ); + REQUIRE( vector.capacity() == 1 ); +} + + TEST_CASE("error") +{ + vector_t vector; + vector.push_back(1.4); + vector.push_back(5.2); + vector.push_back(8.7); + REQUIRE_THROWS_AS(vector.at(4), std::out_of_range); +} From 6a21ac665389d378400019cad54edb600a1179f5 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 00:14:58 +0300 Subject: [PATCH 28/65] Update vector.hpp --- include/vector.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 8ea1328..c482acc 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -19,13 +19,13 @@ class vector_t std::size_t capacity() const; T & at(std::size_t index) { - if(index >= size_) - { - throw std::out_of_range("Error"); - } - return (*this)[index]; + if (index >= size_) + { + throw std::out_of_range("Error"); + } + return (*this)[index]; } - void push_back(int value); + void push_back(T value); void pop_back(); int & operator [](std::size_t index); @@ -110,7 +110,7 @@ std::size_t vector_t::capacity() const } template -void vector_t::push_back(int value) +void vector_t::push_back(T value) { if (size_ == 0) { From 73e074b55b0350e0776e34c2af8193057191bd36 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 00:22:02 +0300 Subject: [PATCH 29/65] Update vector.hpp --- include/vector.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index c482acc..0e98223 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -121,7 +121,7 @@ void vector_t::push_back(T value) } else if (size_ == capacity_) { - int * mas; + T * mas; mas = new T[size_]; for (std::size_t i = 0; i < size_; i++) { @@ -151,7 +151,7 @@ void vector_t::pop_back() size_--; if (size_ == 0 || size_ * 4 == capacity_) { - int *mas; + T *mas; mas = new T[size_]; for (std::size_t i = 0; i < size_; i++) { From 2321bd8408654f50bb60528cdb399c2dcd7b1895 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 00:36:41 +0300 Subject: [PATCH 30/65] Update vector.hpp --- include/vector.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 0e98223..5010f3f 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -171,13 +171,13 @@ void vector_t::pop_back() template int & vector_t::operator [](std::size_t index) { - return elements_[0]; + return elements_[index]; } template int vector_t::operator [](std::size_t index) const { - return elements_[0]; + return elements_[index]; } template From 6ec7926912a2711a7fcbbed3dea6a6bc992aa82a Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 00:51:00 +0300 Subject: [PATCH 31/65] Update vector.hpp --- include/vector.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 5010f3f..9a5dbe4 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -169,13 +169,13 @@ void vector_t::pop_back() } template -int & vector_t::operator [](std::size_t index) +T & vector_t::operator [](std::size_t index) { return elements_[index]; } template -int vector_t::operator [](std::size_t index) const +T vector_t::operator [](std::size_t index) const { return elements_[index]; } From 2504d9f63dc0fc200f7169a8528b83a67fcc0dcf Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 00:56:48 +0300 Subject: [PATCH 32/65] Update vector.hpp --- include/vector.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 9a5dbe4..fb4416d 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -28,8 +28,8 @@ class vector_t void push_back(T value); void pop_back(); - int & operator [](std::size_t index); - int operator [](std::size_t index) const; + T & operator [](std::size_t index); + T operator [](std::size_t index) const; bool operator ==(vector_t const & other) const; }; From 8707c52780b17d15b7d9c8e7ded4bdc38ca035db Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 01:07:52 +0300 Subject: [PATCH 33/65] Update vector.hpp --- include/vector.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/vector.hpp b/include/vector.hpp index fb4416d..68d0cee 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -2,6 +2,7 @@ #include #include + template class vector_t { From a2efdbd539762d8f1920a09df4cf631c4db6caca Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 01:20:05 +0300 Subject: [PATCH 34/65] Update vector.cpp --- tests/vector.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 10753ca..57d97f9 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -129,14 +129,14 @@ TEST_CASE("poping elements") //float -TEST_CASE("creating vector") +TEST_CASE("creating vector_F") { vector_t vector; REQUIRE( vector.size() == 0 ); REQUIRE( vector.capacity() == 0 ); } -TEST_CASE("copying vector") +TEST_CASE("copying vector_F") { vector_t vector; vector.push_back(1.2); @@ -145,7 +145,7 @@ TEST_CASE("copying vector") REQUIRE( copy == vector ); } -TEST_CASE("assigning vector") +TEST_CASE("assigning vector_F") { vector_t vector1; vector_t vector2; @@ -157,7 +157,7 @@ TEST_CASE("assigning vector") REQUIRE( vector1 == vector2 ); } -TEST_CASE("equaling vector") +TEST_CASE("equaling vector_F") { vector_t vector1; vector_t vector2; @@ -171,7 +171,7 @@ TEST_CASE("equaling vector") REQUIRE( vector1 != vector2 ); } -TEST_CASE("indexing vector") +TEST_CASE("indexing vector_F") { vector_t vector; @@ -183,7 +183,7 @@ TEST_CASE("indexing vector") REQUIRE( copy[0] == 1.4 ); } -TEST_CASE("pushing elements") +TEST_CASE("pushing elements_F") { vector_t vector; @@ -208,7 +208,7 @@ TEST_CASE("pushing elements") REQUIRE( vector.capacity() == 8 ); } -TEST_CASE("poping elements") +TEST_CASE("poping elements_F") { vector_t vector; @@ -244,7 +244,7 @@ TEST_CASE("poping elements") REQUIRE( vector.capacity() == 1 ); } - TEST_CASE("error") + TEST_CASE("error_f") { vector_t vector; vector.push_back(1.4); From 7ca843a9d5d52e42232c1a74d487b680cd2e614d Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 01:30:43 +0300 Subject: [PATCH 35/65] Update vector.cpp --- tests/vector.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 57d97f9..d784a1e 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -177,10 +177,10 @@ TEST_CASE("indexing vector_F") vector.push_back(1.4); - REQUIRE( vector[0] == 1.4 ); + REQUIRE( vector[0] == 1.4f); vector_t const copy(vector); - REQUIRE( copy[0] == 1.4 ); + REQUIRE( copy[0] == 1.4f); } TEST_CASE("pushing elements_F") From b88a5e0cba6c8e5dc26ae67f55bc00796a3100d4 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 13:03:35 +0300 Subject: [PATCH 36/65] Update vector.hpp --- include/vector.hpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 68d0cee..0eb114a 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -18,14 +18,7 @@ class vector_t std::size_t size() const; std::size_t capacity() const; - T & at(std::size_t index) - { - if (index >= size_) - { - throw std::out_of_range("Error"); - } - return (*this)[index]; - } + T & at(std::size_t index); void push_back(T value); void pop_back(); @@ -190,3 +183,13 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } return true; } + +template +T & at(std::size_t index) + { + if (index >= size_) + { + throw std::out_of_range("Error. Out of range!"); + } + return (*this)[index]; + } From 4d3000518d644f4982cb14d4112760f3b4de746e Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 13:12:02 +0300 Subject: [PATCH 37/65] Update vector.hpp --- include/vector.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 0eb114a..ef94403 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -186,10 +186,10 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) template T & at(std::size_t index) +{ + if (index >= size_) { - if (index >= size_) - { - throw std::out_of_range("Error. Out of range!"); - } - return (*this)[index]; + throw std::out_of_range("Error. Out of range!"); } + return elements_[index]; +} From e40620833026da333a0b796b626a164b1c2c3b58 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 13:21:50 +0300 Subject: [PATCH 38/65] Update vector.hpp --- include/vector.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index ef94403..c6b41ca 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -185,11 +185,10 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } template -T & at(std::size_t index) +T & vector_t::at (std::size_t index) const { - if (index >= size_) - { - throw std::out_of_range("Error. Out of range!"); + if ( index >= size_ ) { + throw std::out_of_range( "Error range" ); } return elements_[index]; } From 93b9fcf8b193c51c111b07583dde8487c175b769 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 13:39:56 +0300 Subject: [PATCH 39/65] Update vector.hpp --- include/vector.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/vector.hpp b/include/vector.hpp index c6b41ca..b29328f 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -18,7 +18,7 @@ class vector_t std::size_t size() const; std::size_t capacity() const; - T & at(std::size_t index); + T & at (std::size_t index); void push_back(T value); void pop_back(); From 18f0dcf50399ce187c405a5d652b543c5bede9f0 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 23 Mar 2018 16:17:04 +0300 Subject: [PATCH 40/65] Update vector.hpp --- include/vector.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/vector.hpp b/include/vector.hpp index b29328f..cb5d70f 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -185,7 +185,7 @@ bool operator !=(vector_t const & lhs, vector_t const & rhs) } template -T & vector_t::at (std::size_t index) const +T & vector_t::at (std::size_t index) { if ( index >= size_ ) { throw std::out_of_range( "Error range" ); From d6c65d0f877c636c21afb88fba85d2894cccf31b Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 21:29:51 +0300 Subject: [PATCH 41/65] Update vector.hpp --- include/vector.hpp | 258 +++++++++++++++------------------------------ 1 file changed, 87 insertions(+), 171 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index cb5d70f..cdc2b23 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -2,193 +2,109 @@ #include #include - -template -class vector_t +class tree_t { private: - T * elements_; - std::size_t size_; - std::size_t capacity_; + struct node_t { + node_t * left=nullptr; + node_t * right = nullptr; + int value = 0; + }; +private: + node_t * root_; public: - vector_t(); - vector_t(vector_t const & other); - vector_t & operator =(vector_t const & other); - ~vector_t(); - - std::size_t size() const; - std::size_t capacity() const; - T & at (std::size_t index); - void push_back(T value); - void pop_back(); - - T & operator [](std::size_t index); - T operator [](std::size_t index) const; - - bool operator ==(vector_t const & other) const; -}; - -template -bool operator !=(vector_t const & lhs, vector_t const & rhs); - -template -vector_t::vector_t() -{ - elements_ = nullptr; - size_ = 0; - capacity_ = 0; -} - -template -vector_t::vector_t(vector_t const & other) -{ - size_ = other.size_; - capacity_ = other.capacity_; - elements_ = new T[capacity_]; - for (std::size_t i = 0; i < size_; ++i) - { - elements_[i] = other.elements_[i]; + tree_t() { + root_ = nullptr; } -} - -template -vector_t & vector_t::operator =(vector_t const & other) -{ - if (this != &other) - { - delete[] elements_; - size_ = other.size_; - capacity_ = other.capacity_; - elements_ = new T[other.capacity_]; - for (std::size_t i = 0; i < size_; i++) + ~tree_t() { + node_t * time_node = new node_t; + time_node = root_; + while (time_node!= nullptr) { - elements_[i] = other.elements_[i]; - } - } - return *this; -} - -template -bool vector_t::operator ==(vector_t const & other) const -{ - if (size_ == other.size_) - { - for (std::size_t i = 0; i < size_; i++) - { - if (elements_[i] != other.elements_[i]) + if (time_node->left != nullptr) { - return false; + time_node = time_node->left; + } + else if (time_node->right != nullptr) + { + time_node = time_node->right; + } + else if (time_node->left == nullptr && time_node->right == nullptr) + { + delete[] time_node->left; + delete[] time_node->right; + time_node = root_; + if (time_node->left == nullptr && time_node->right == nullptr) + { + time_node = nullptr; + cout << "delete root"; + } + cout << "udalil"; } } - return true; + delete[] time_node; } - else return false; -} - -template -vector_t::~vector_t() -{ - delete[] elements_; -} - -template -std::size_t vector_t::size() const -{ - return size_; -} - -template -std::size_t vector_t::capacity() const -{ - return capacity_; -} - -template -void vector_t::push_back(T value) -{ - if (size_ == 0) - { - size_ = 1; - capacity_ = 1; - elements_ = new T[capacity_]; - elements_[0] = value; - } - else if (size_ == capacity_) - { - T * mas; - mas = new T[size_]; - for (std::size_t i = 0; i < size_; i++) - { - mas[i] = elements_[i]; - } - delete[] elements_; - capacity_ *= 2; - elements_ = new T[capacity_]; - for (std::size_t i = 0; i < size_; i++) - { - elements_[i] = mas[i]; + void insert(int value) { + node_t* node = new node_t; + node->value = value; + node->right = nullptr; + node->left = nullptr; + if (root_ == nullptr) { + root_ = node; + return; } - delete[] mas; - elements_[size_] = value; - size_++; - } - else - { - elements_[size_] = value; - size_++; - } -} -template -void vector_t::pop_back() -{ - size_--; - if (size_ == 0 || size_ * 4 == capacity_) - { - T *mas; - mas = new T[size_]; - for (std::size_t i = 0; i < size_; i++) - { - mas[i] = elements_[i]; + node_t* vetka = root_; + while (vetka != nullptr) { + if (vetka->value < value) { + if (vetka->right != nullptr) { + vetka = vetka->right; + } + else { + vetka->right = node; + return; + } + } + else if (vetka->value > value) { + if (vetka->left != nullptr) { + vetka = vetka->left; + } + else { + vetka->left = node; + return; + } + } + else + return; } - delete[] elements_; - capacity_ = capacity_ / 2; - elements_ = new T[capacity_]; - for (std::size_t i = 0; i < size_; i++) - { - elements_[i] = mas[i]; + } + bool find(int value) const { + node_t * node = root_; + while (node != nullptr) { + if (node->value == value) { + return true; + } + else { + if (value <= node->value) { + node = node->left; + } + else node = node->right; + } } - delete[] mas; + return false; } -} -template -T & vector_t::operator [](std::size_t index) -{ - return elements_[index]; -} + void print(std::ostream& stream, int level, node_t* node) { + if (node == nullptr) + return; -template -T vector_t::operator [](std::size_t index) const -{ - return elements_[index]; -} + print(stream, level + 1, node->right); -template -bool operator !=(vector_t const & lhs, vector_t const & rhs) -{ - if (lhs == rhs) - { - return false; - } - return true; -} + for (unsigned int i = 0; i < level; i++) { + stream << "---"; + } + stream << node->value << endl; -template -T & vector_t::at (std::size_t index) -{ - if ( index >= size_ ) { - throw std::out_of_range( "Error range" ); + print(stream, level + 1, node->left); } - return elements_[index]; -} +}; From d96801c191e777a9912d4bf412ef59c4c844b26a Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 21:56:16 +0300 Subject: [PATCH 42/65] Update vector.hpp --- include/vector.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/vector.hpp b/include/vector.hpp index cdc2b23..7193ac0 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -16,6 +16,7 @@ class tree_t tree_t() { root_ = nullptr; } + node_t* root() { return root_; } ~tree_t() { node_t * time_node = new node_t; time_node = root_; From 0e7e21dcae2ce4473902da95fa6d70924ce28ae2 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 22:12:03 +0300 Subject: [PATCH 43/65] Update vector.hpp --- include/vector.hpp | 79 ++++++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 30 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 7193ac0..720b74b 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -1,6 +1,5 @@ #include -#include -#include + class tree_t { @@ -16,35 +15,33 @@ class tree_t tree_t() { root_ = nullptr; } - node_t* root() { return root_; } - ~tree_t() { - node_t * time_node = new node_t; - time_node = root_; - while (time_node!= nullptr) - { - if (time_node->left != nullptr) - { - time_node = time_node->left; - } - else if (time_node->right != nullptr) - { - time_node = time_node->right; - } - else if (time_node->left == nullptr && time_node->right == nullptr) - { - delete[] time_node->left; - delete[] time_node->right; - time_node = root_; - if (time_node->left == nullptr && time_node->right == nullptr) - { - time_node = nullptr; - cout << "delete root"; - } - cout << "udalil"; - } - } - delete[] time_node; + node_t* root() + { + return root_; } + + void check_operator(std::ostream& stream, char op, int value) { + switch (op) { + case '+': { + insert(value); + break; + } + case '?': { + find(value); + break; + } + case '=': { + print(stream, 0, root_); + break; + } + case 'q': { + exit(0); + break; + } + default: { cout << "invalid operation"; } + } + } + void insert(int value) { node_t* node = new node_t; node->value = value; @@ -108,4 +105,26 @@ class tree_t print(stream, level + 1, node->left); } + + void destroy(node_t* node) { + node_t* time = node; + while (time != nullptr) { + if (time->left != nullptr) { + time = time->left; + } else if (time->right != nullptr) { + time = time->right; + } else if (time == node && node->left == nullptr && + node->right == nullptr) { + delete time; + break; + } else if (time->left == nullptr && time->right == nullptr) { + delete time; + time = node; + } + } + } + ~tree_t() + { + destroy(root_); + } }; From 764d0840c75318cbb5e245924adf6bd99abada5d Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 22:15:22 +0300 Subject: [PATCH 44/65] Update vector.hpp --- include/vector.hpp | 267 ++++++++++++++++++++++++++------------------- 1 file changed, 152 insertions(+), 115 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 720b74b..4ef38ab 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -1,130 +1,167 @@ #include - class tree_t { private: - struct node_t { - node_t * left=nullptr; - node_t * right = nullptr; - int value = 0; - }; + struct node_t + { + node_t* left = nullptr; + node_t* right = nullptr; + int value = 0; + }; + private: - node_t * root_; + node_t* root_; + public: - tree_t() { - root_ = nullptr; - } - node_t* root() - { - return root_; - } - - void check_operator(std::ostream& stream, char op, int value) { - switch (op) { - case '+': { - insert(value); - break; - } - case '?': { - find(value); - break; - } - case '=': { - print(stream, 0, root_); - break; - } - case 'q': { - exit(0); - break; - } - default: { cout << "invalid operation"; } + tree_t() + { + root_ = nullptr; + } + node_t* root() + { + return root_; + } + + void check_operator(std::ostream& stream, char op, int value) + { + switch (op) + { + case '+': + { + insert(value); + break; + } + case '?': + { + find(value); + break; + } + case '=': + { + print(stream, 0, root_); + break; + } + case 'q': + { + exit(0); + break; + } + default: + { + cout << "invalid operation"; + } + } } - } - - void insert(int value) { - node_t* node = new node_t; - node->value = value; - node->right = nullptr; - node->left = nullptr; - if (root_ == nullptr) { - root_ = node; - return; - } - node_t* vetka = root_; - while (vetka != nullptr) { - if (vetka->value < value) { - if (vetka->right != nullptr) { - vetka = vetka->right; - } - else { - vetka->right = node; - return; - } - } - else if (vetka->value > value) { - if (vetka->left != nullptr) { - vetka = vetka->left; - } - else { - vetka->left = node; - return; - } - } - else - return; - } - } - bool find(int value) const { - node_t * node = root_; - while (node != nullptr) { - if (node->value == value) { - return true; - } - else { - if (value <= node->value) { - node = node->left; - } - else node = node->right; - } - } - return false; - } + void insert(int value) + { + node_t* node = new node_t; + node->value = value; + node->right = nullptr; + node->left = nullptr; + if (root_ == nullptr) + { + root_ = node; + return; + } - void print(std::ostream& stream, int level, node_t* node) { - if (node == nullptr) - return; + node_t* vetka = root_; + while (vetka != nullptr) + { + if (vetka->value < value) + { + if (vetka->right != nullptr) + { + vetka = vetka->right; + } + else + { + vetka->right = node; + return; + } + } + else if (vetka->value > value) + { + if (vetka->left != nullptr) + { + vetka = vetka->left; + } + else + { + vetka->left = node; + return; + } + } + else + return; + } + } + bool find(int value) const + { + node_t* node = root_; + while (node != nullptr) + { + if (node->value == value) + { + return true; + } + else + { + if (value <= node->value) + { + node = node->left; + } + else + node = node->right; + } + } + return false; + } + + void print(std::ostream& stream, int level, node_t* node) + { + if (node == nullptr) + return; - print(stream, level + 1, node->right); + print(stream, level + 1, node->right); - for (unsigned int i = 0; i < level; i++) { - stream << "---"; - } - stream << node->value << endl; + for (unsigned int i = 0; i < level; i++) + { + stream << "---"; + } + stream << node->value << endl; - print(stream, level + 1, node->left); - } - - void destroy(node_t* node) { - node_t* time = node; - while (time != nullptr) { - if (time->left != nullptr) { - time = time->left; - } else if (time->right != nullptr) { - time = time->right; - } else if (time == node && node->left == nullptr && - node->right == nullptr) { - delete time; - break; - } else if (time->left == nullptr && time->right == nullptr) { - delete time; - time = node; - } + print(stream, level + 1, node->left); + } + + void destroy(node_t* node) + { + node_t* time = node; + while (time != nullptr) + { + if (time->left != nullptr) + { + time = time->left; + } + else if (time->right != nullptr) + { + time = time->right; + } + else if (time == node && node->left == nullptr && node->right == nullptr) + { + delete time; + break; + } + else if (time->left == nullptr && time->right == nullptr) + { + delete time; + time = node; + } + } + } + ~tree_t() + { + destroy(root_); } - } - ~tree_t() - { - destroy(root_); - } }; From 8f2b52c50642aed0e13a77dcf1f90c2e02fb514d Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 23:30:00 +0300 Subject: [PATCH 45/65] Update vector.cpp --- tests/vector.cpp | 293 +++++++++-------------------------------------- 1 file changed, 56 insertions(+), 237 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index d784a1e..d7dcb0a 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -3,252 +3,71 @@ #include "vector.hpp" -TEST_CASE("creating vector") +TEST_CASE("Сreating tree") { - vector_t vector; - REQUIRE( vector.size() == 0 ); - REQUIRE( vector.capacity() == 0 ); + tree_t My_tree; + REQUIRE( My_tree.root() == nullptr ); } -TEST_CASE("copying vector") +TEST_CASE("Add elements in tree") { - vector_t vector; - vector.push_back(1); - - vector_t copy(vector); - REQUIRE( copy == vector ); -} - -TEST_CASE("assigning vector") -{ - vector_t vector1; - vector_t vector2; - - vector1.push_back(1); - vector2.push_back(2); - - vector1 = vector2; - REQUIRE( vector1 == vector2 ); -} - -TEST_CASE("equaling vector") -{ - vector_t vector1; - vector_t vector2; - - vector1.push_back(1); - vector2.push_back(1); - - REQUIRE( vector1 == vector2 ); - - vector1.push_back(2); - REQUIRE( vector1 != vector2 ); -} - -TEST_CASE("indexing vector") -{ - vector_t vector; - - vector.push_back(1); - - REQUIRE( vector[0] == 1 ); - - vector_t const copy(vector); - REQUIRE( copy[0] == 1 ); -} - -TEST_CASE("pushing elements") -{ - vector_t vector; - - vector.push_back(1); - REQUIRE( vector.size() == 1 ); - REQUIRE( vector.capacity() == 1 ); - - vector.push_back(2); - REQUIRE( vector.size() == 2 ); - REQUIRE( vector.capacity() == 2 ); - - vector.push_back(3); - REQUIRE( vector.size() == 3 ); - REQUIRE( vector.capacity() == 4 ); - - vector.push_back(4); - REQUIRE( vector.size() == 4 ); - REQUIRE( vector.capacity() == 4 ); - - vector.push_back(5); - REQUIRE( vector.size() == 5 ); - REQUIRE( vector.capacity() == 8 ); -} - -TEST_CASE("poping elements") -{ - vector_t vector; - - vector.push_back(1); - vector.push_back(2); - vector.push_back(3); - vector.push_back(4); - vector.push_back(5); - vector.push_back(6); - - vector.pop_back(); - REQUIRE( vector.size() == 5 ); - REQUIRE( vector.capacity() == 8 ); - - vector.pop_back(); - REQUIRE( vector.size() == 4 ); - REQUIRE( vector.capacity() == 8 ); - - vector.pop_back(); - REQUIRE( vector.size() == 3 ); - REQUIRE( vector.capacity() == 8 ); - - vector.pop_back(); - REQUIRE( vector.size() == 2 ); - REQUIRE( vector.capacity() == 4 ); - - vector.pop_back(); - REQUIRE( vector.size() == 1 ); - REQUIRE( vector.capacity() == 2 ); - - vector.pop_back(); - REQUIRE( vector.size() == 0 ); - REQUIRE( vector.capacity() == 1 ); -} - - TEST_CASE("error") -{ - vector_t vector; - vector.push_back(4); - vector.push_back(2); - vector.push_back(9); - REQUIRE_THROWS_AS(vector.at(4), std::out_of_range); -} - -//float - -TEST_CASE("creating vector_F") -{ - vector_t vector; - REQUIRE( vector.size() == 0 ); - REQUIRE( vector.capacity() == 0 ); -} - -TEST_CASE("copying vector_F") + tree_t My_tree; + My_tree.insert(7); + My_tree.insert(3); + My_tree.insert(9); + My_tree.insert(6); + std::ostringstream ostream; + My_tree.print(ostream, 0, My_tree.root()); + std::string output{ + "---9\n" + "7\n" + "------6\n" + "---3"}; + REQUIRE(output == ostream.str()); +} + +TEST_CASE("Check root tree") { - vector_t vector; - vector.push_back(1.2); + tree_t My_tree; + My_tree.insert(7); + My_tree.insert(3); + My_tree.insert(9); - vector_t copy(vector); - REQUIRE( copy == vector ); + REQUIRE(My_tree.find(9) == true); + REQUIRE(My_tree.find(2) == false); } -TEST_CASE("assigning vector_F") +TEST_CASE("Check operator tree '+' and '=') { - vector_t vector1; - vector_t vector2; - - vector1.push_back(1.1); - vector2.push_back(2.2); - - vector1 = vector2; - REQUIRE( vector1 == vector2 ); -} - -TEST_CASE("equaling vector_F") -{ - vector_t vector1; - vector_t vector2; - - vector1.push_back(1.3); - vector2.push_back(1.3); - - REQUIRE( vector1 == vector2 ); - - vector1.push_back(2.3); - REQUIRE( vector1 != vector2 ); -} - -TEST_CASE("indexing vector_F") -{ - vector_t vector; - - vector.push_back(1.4); - - REQUIRE( vector[0] == 1.4f); - - vector_t const copy(vector); - REQUIRE( copy[0] == 1.4f); -} - -TEST_CASE("pushing elements_F") + tree_t My_tree; + My_tree.operation('+', 7); + My_tree.operation('+', 3); + My_tree.operation('+', 9); + My_tree.operation('+', 6); + std::string output { + "---9\n" + "7\n" + "------6\n" + "---3"}; + std::ostringstream ostream; + My_tree.check_operator (ostream, '=', 0); + + REQUIRE(output == stream.str()); +} +TEST_CASE("Check operator tree '?') { - vector_t vector; - - vector.push_back(1.1); - REQUIRE( vector.size() == 1 ); - REQUIRE( vector.capacity() == 1 ); - - vector.push_back(2.2); - REQUIRE( vector.size() == 2 ); - REQUIRE( vector.capacity() == 2 ); - - vector.push_back(3.3); - REQUIRE( vector.size() == 3 ); - REQUIRE( vector.capacity() == 4 ); - - vector.push_back(4.1); - REQUIRE( vector.size() == 4 ); - REQUIRE( vector.capacity() == 4 ); - - vector.push_back(5.2); - REQUIRE( vector.size() == 5 ); - REQUIRE( vector.capacity() == 8 ); -} - -TEST_CASE("poping elements_F") + tree_t My_tree; + My_tree.insert(7); + My_tree.insert(3); + My_tree.insert(9); + std::ostringstream ostream; + My_tree.check_operator (ostream, '?', 3); + REQUIRE(ostream.str() == "true"); +} + TEST_CASE("Check other operator tree ) { - vector_t vector; - - vector.push_back(1.0); - vector.push_back(2.0); - vector.push_back(3.3); - vector.push_back(4.2); - vector.push_back(5.1); - vector.push_back(6.4); - - vector.pop_back(); - REQUIRE( vector.size() == 5 ); - REQUIRE( vector.capacity() == 8 ); - - vector.pop_back(); - REQUIRE( vector.size() == 4 ); - REQUIRE( vector.capacity() == 8 ); - - vector.pop_back(); - REQUIRE( vector.size() == 3 ); - REQUIRE( vector.capacity() == 8 ); - - vector.pop_back(); - REQUIRE( vector.size() == 2 ); - REQUIRE( vector.capacity() == 4 ); - - vector.pop_back(); - REQUIRE( vector.size() == 1 ); - REQUIRE( vector.capacity() == 2 ); - - vector.pop_back(); - REQUIRE( vector.size() == 0 ); - REQUIRE( vector.capacity() == 1 ); -} - - TEST_CASE("error_f") -{ - vector_t vector; - vector.push_back(1.4); - vector.push_back(5.2); - vector.push_back(8.7); - REQUIRE_THROWS_AS(vector.at(4), std::out_of_range); + tree_t My_tree; + std::ostringstream ostream; + My_tree.check_operator (ostream, '^', 3); + REQUIRE_THROWS_AS(My_tree.check_operator('^', 3), std::invalid_argument); } From fb2f70c7f622b9f0d7bffa093bcb958b74dd030c Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 23:40:13 +0300 Subject: [PATCH 46/65] Update vector.hpp --- include/vector.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 4ef38ab..f7c0d90 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -49,7 +49,7 @@ class tree_t } default: { - cout << "invalid operation"; + throw std::invalid_argument("Error of use operator"); } } } @@ -128,9 +128,9 @@ class tree_t for (unsigned int i = 0; i < level; i++) { - stream << "---"; + std::stream << "---"; } - stream << node->value << endl; + std::stream << node->value << std::endl; print(stream, level + 1, node->left); } From 41314b76bd82172850bb57b71181d972c528b716 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Thu, 29 Mar 2018 23:42:45 +0300 Subject: [PATCH 47/65] Update vector.cpp --- tests/vector.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index d7dcb0a..4f87d9d 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -37,7 +37,7 @@ TEST_CASE("Check root tree") REQUIRE(My_tree.find(2) == false); } -TEST_CASE("Check operator tree '+' and '=') +TEST_CASE("Check operator tree '+' and '=' ") { tree_t My_tree; My_tree.operation('+', 7); @@ -54,7 +54,7 @@ TEST_CASE("Check operator tree '+' and '=') REQUIRE(output == stream.str()); } -TEST_CASE("Check operator tree '?') +TEST_CASE("Check operator tree '?' ") { tree_t My_tree; My_tree.insert(7); @@ -64,7 +64,7 @@ TEST_CASE("Check operator tree '?') My_tree.check_operator (ostream, '?', 3); REQUIRE(ostream.str() == "true"); } - TEST_CASE("Check other operator tree ) + TEST_CASE("Check other operator tree ") { tree_t My_tree; std::ostringstream ostream; From a66bc24f4d74c7eeb5564997cd38a3143ef0a170 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 00:04:30 +0300 Subject: [PATCH 48/65] Update vector.cpp --- tests/vector.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 4f87d9d..aed15f2 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -40,10 +40,10 @@ TEST_CASE("Check root tree") TEST_CASE("Check operator tree '+' and '=' ") { tree_t My_tree; - My_tree.operation('+', 7); - My_tree.operation('+', 3); - My_tree.operation('+', 9); - My_tree.operation('+', 6); + My_tree.check_operator('+', 7); + My_tree.check_operator('+', 3); + My_tree.check_operator('+', 9); + My_tree.check_operator('+', 6); std::string output { "---9\n" "7\n" From e184c32ba64d529721b9ee4de720a91884c8c48e Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 00:04:37 +0300 Subject: [PATCH 49/65] Update vector.hpp --- include/vector.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index f7c0d90..2b461de 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -124,7 +124,7 @@ class tree_t if (node == nullptr) return; - print(stream, level + 1, node->right); + print(std::stream, level + 1, node->right); for (unsigned int i = 0; i < level; i++) { @@ -132,7 +132,7 @@ class tree_t } std::stream << node->value << std::endl; - print(stream, level + 1, node->left); + print(std::stream, level + 1, node->left); } void destroy(node_t* node) From e1659873ae5929ff4e4e93b80b8c7ac80a0f7f6e Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 00:12:48 +0300 Subject: [PATCH 50/65] Update vector.hpp --- include/vector.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 2b461de..2ef2037 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -124,15 +124,15 @@ class tree_t if (node == nullptr) return; - print(std::stream, level + 1, node->right); + print(stream, level + 1, node->right); for (unsigned int i = 0; i < level; i++) { - std::stream << "---"; + stream << "---"; } - std::stream << node->value << std::endl; + stream << node->value << std::endl; - print(std::stream, level + 1, node->left); + print(stream, level + 1, node->left); } void destroy(node_t* node) From 2fc39e989704a706d5d7daeb2724551204b7647a Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 00:41:21 +0300 Subject: [PATCH 51/65] Update vector.cpp --- tests/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index aed15f2..9f664eb 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -69,5 +69,5 @@ TEST_CASE("Check operator tree '?' ") tree_t My_tree; std::ostringstream ostream; My_tree.check_operator (ostream, '^', 3); - REQUIRE_THROWS_AS(My_tree.check_operator('^', 3), std::invalid_argument); + REQUIRE_THROWS_AS(My_tree.check_operator(ostream, '^', 3), std::invalid_argument); } From 03b430803c1d7d90292f95e4ee9244a8d11dfea9 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 00:47:16 +0300 Subject: [PATCH 52/65] Update vector.cpp --- tests/vector.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 9f664eb..d7590ec 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -40,16 +40,16 @@ TEST_CASE("Check root tree") TEST_CASE("Check operator tree '+' and '=' ") { tree_t My_tree; - My_tree.check_operator('+', 7); - My_tree.check_operator('+', 3); - My_tree.check_operator('+', 9); - My_tree.check_operator('+', 6); + std::ostringstream ostream; + My_tree.check_operator(ostream, '+', 7); + My_tree.check_operator(ostream, '+', 3); + My_tree.check_operator(ostream, '+', 9); + My_tree.check_operator(ostream, '+', 6); std::string output { "---9\n" "7\n" "------6\n" "---3"}; - std::ostringstream ostream; My_tree.check_operator (ostream, '=', 0); REQUIRE(output == stream.str()); From 8158e5f07077f1665be93e082e2e0faff50b24d0 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 00:52:39 +0300 Subject: [PATCH 53/65] Update vector.cpp --- tests/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index d7590ec..0a899ae 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -52,7 +52,7 @@ TEST_CASE("Check operator tree '+' and '=' ") "---3"}; My_tree.check_operator (ostream, '=', 0); - REQUIRE(output == stream.str()); + REQUIRE(output == otream.str()); } TEST_CASE("Check operator tree '?' ") { From de15b2165f07c131cc29c2ce7f6f82b9c59b1217 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 01:00:42 +0300 Subject: [PATCH 54/65] Update vector.cpp --- tests/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 0a899ae..ba70abe 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -52,7 +52,7 @@ TEST_CASE("Check operator tree '+' and '=' ") "---3"}; My_tree.check_operator (ostream, '=', 0); - REQUIRE(output == otream.str()); + REQUIRE(output == ostream.str()); } TEST_CASE("Check operator tree '?' ") { From dc70972f437314badb46052bcadbbc108c5be616 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 01:13:39 +0300 Subject: [PATCH 55/65] Update vector.cpp --- tests/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index ba70abe..964fb0d 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -22,7 +22,7 @@ TEST_CASE("Add elements in tree") "---9\n" "7\n" "------6\n" - "---3"}; + "---3\n"}; REQUIRE(output == ostream.str()); } From 3bb82565aea4c6925b3d1f110373b3d1144dc737 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 01:39:31 +0300 Subject: [PATCH 56/65] Update vector.hpp --- include/vector.hpp | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index 2ef2037..bfaaf3e 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -137,28 +137,11 @@ class tree_t void destroy(node_t* node) { - node_t* time = node; - while (time != nullptr) - { - if (time->left != nullptr) - { - time = time->left; - } - else if (time->right != nullptr) - { - time = time->right; - } - else if (time == node && node->left == nullptr && node->right == nullptr) - { - delete time; - break; - } - else if (time->left == nullptr && time->right == nullptr) - { - delete time; - time = node; - } - } + if (root_ != nullptr) { + if (node->left) del (node->left); + if (node->right) del (node->right); + } + delete node; } ~tree_t() { From 356262e9f9f10703b823b5e21f7f8ff67cd7177b Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 01:39:51 +0300 Subject: [PATCH 57/65] Update vector.hpp From 8f6e6249d7d0a78e617d9915886aea8d3caa3b5c Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 01:55:38 +0300 Subject: [PATCH 58/65] Update vector.hpp --- include/vector.hpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index bfaaf3e..f8d12a3 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -135,14 +135,12 @@ class tree_t print(stream, level + 1, node->left); } - void destroy(node_t* node) - { - if (root_ != nullptr) { - if (node->left) del (node->left); - if (node->right) del (node->right); - } - delete node; + void destroy(node_t* node) { + if(node != nullptr){ + destroy(node->left); + destroy(node->right); } + ~tree_t() { destroy(root_); From 1493bf5d02461bc143897f748f2e4a0fd747fec7 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 02:02:25 +0300 Subject: [PATCH 59/65] Update vector.hpp --- include/vector.hpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/include/vector.hpp b/include/vector.hpp index f8d12a3..c261bfa 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -135,14 +135,16 @@ class tree_t print(stream, level + 1, node->left); } - void destroy(node_t* node) { - if(node != nullptr){ - destroy(node->left); - destroy(node->right); - } - - ~tree_t() - { - destroy(root_); - } + void destroy(node_t* node) + { + if (node != nullptr) + { + destroy(node->left); + destroy(node->right); + } + } + ~tree_t() + { + destroy(root_); + } }; From fb4dc36d677129259c4207d20a286a5531db6501 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 02:14:24 +0300 Subject: [PATCH 60/65] Update vector.hpp --- include/vector.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/vector.hpp b/include/vector.hpp index c261bfa..64bbb12 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -34,7 +34,11 @@ class tree_t } case '?': { - find(value); + if(find(value)) + { + stream << "true"; + } + else stream << "false"; break; } case '=': From 275153ca29dc43d0071b3ab2ae1426d19dad67f8 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 02:23:17 +0300 Subject: [PATCH 61/65] Update vector.cpp --- tests/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 964fb0d..6224f6a 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -69,5 +69,5 @@ TEST_CASE("Check operator tree '?' ") tree_t My_tree; std::ostringstream ostream; My_tree.check_operator (ostream, '^', 3); - REQUIRE_THROWS_AS(My_tree.check_operator(ostream, '^', 3), std::invalid_argument); + REQUIRE_THROWS_AS(My_tree.check_operator((ostream, '^', 3), std::invalid_argument); } From 868ecb994673f794f2a07c8929f6581edc926795 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 02:31:21 +0300 Subject: [PATCH 62/65] Update vector.cpp --- tests/vector.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 6224f6a..1f40ef4 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -64,10 +64,4 @@ TEST_CASE("Check operator tree '?' ") My_tree.check_operator (ostream, '?', 3); REQUIRE(ostream.str() == "true"); } - TEST_CASE("Check other operator tree ") -{ - tree_t My_tree; - std::ostringstream ostream; - My_tree.check_operator (ostream, '^', 3); - REQUIRE_THROWS_AS(My_tree.check_operator((ostream, '^', 3), std::invalid_argument); -} + From 09940699a822a1870583011b839f40dc84c143b9 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 02:31:59 +0300 Subject: [PATCH 63/65] Update vector.hpp --- include/vector.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/vector.hpp b/include/vector.hpp index 64bbb12..39cdff4 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -53,7 +53,7 @@ class tree_t } default: { - throw std::invalid_argument("Error of use operator"); + stream <<"Error of use operator"; } } } From a02952f0a42658c50aa963ccd1a6887b03d2b780 Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 02:39:16 +0300 Subject: [PATCH 64/65] Update vector.cpp --- tests/vector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/vector.cpp b/tests/vector.cpp index 1f40ef4..70f5608 100644 --- a/tests/vector.cpp +++ b/tests/vector.cpp @@ -49,7 +49,7 @@ TEST_CASE("Check operator tree '+' and '=' ") "---9\n" "7\n" "------6\n" - "---3"}; + "---3\n"}; My_tree.check_operator (ostream, '=', 0); REQUIRE(output == ostream.str()); From 83413de57826b976986fc13319a29841ec3c132b Mon Sep 17 00:00:00 2001 From: ilya41299 <32190925+ilya41299@users.noreply.github.com> Date: Fri, 30 Mar 2018 12:16:58 +0300 Subject: [PATCH 65/65] Update vector.hpp --- include/vector.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/vector.hpp b/include/vector.hpp index 39cdff4..c3ef865 100644 --- a/include/vector.hpp +++ b/include/vector.hpp @@ -145,6 +145,7 @@ class tree_t { destroy(node->left); destroy(node->right); + delete node; } } ~tree_t()