Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
4 files changed, 367 insertions, 367 deletions
-rw-r--r--Sem. 10/Examples/MyString/MyString.cpp (renamed from Sem. 10/MyString/MyString.cpp)274
-rw-r--r--Sem. 10/Examples/MyString/MyString.h (renamed from Sem. 10/MyString/MyString.h)82
-rw-r--r--Sem. 10/Examples/Queue.hpp (renamed from Sem. 10/Queue.hpp)298
-rw-r--r--Sem. 10/Examples/Source.cpp (renamed from Sem. 10/Source.cpp)80
diff --git a/Sem. 10/MyString/MyString.cpp b/Sem. 10/Examples/MyString/MyString.cpp
index 1bceef5..77f2119 100644
--- a/Sem. 10/MyString/MyString.cpp
+++ b/Sem. 10/Examples/MyString/MyString.cpp
@@ -1,138 +1,138 @@
-#include "MyString.h"
-#include <cstring>
-#include <iostream>
-
-void MyString::copyFrom(const MyString& other)
-{
- str = new char[strlen(other.str) + 1];
- strcpy(str, other.str);
- size = other.size;
-}
-void MyString::free()
-{
- delete[] str;
-}
-
-MyString::MyString()
-{
- str = new char[1];
- str[0] = '\0';
- size = 0;
-}
-
-MyString::MyString(const char* data)
-{
- size = strlen(data);
- str = new char[size + 1];
- strcpy(str, data);
-}
-
-MyString::MyString(const MyString& other)
-{
- copyFrom(other);
-}
-MyString& MyString::operator=(const MyString& other)
-{
- std::cout << "op=" << std::endl;
-
- if (this != &other)
- {
- free();
- copyFrom(other);
- }
- return *this;
-}
-MyString::~MyString()
-{
- free();
-}
-
-
-size_t MyString::getSize() const
-{
- return size;
-}
-void MyString::concat(const MyString& other)
-{
- char* temp = new char[getSize() + other.getSize() + 1];
- strcpy(temp, str);
- strcat(temp, other.str);
-
- delete[] str;
- str = temp;
- size = size + other.getSize();
-}
-
-const char* MyString::c_str() const
-{
- return str;
-}
-
-MyString& MyString::operator+=(const MyString& other)
-{
- concat(other);
- return *this;
-}
-
-MyString operator+(const MyString& lhs, const MyString& rhs)
-{
- MyString copyOfLeft(lhs);
- copyOfLeft += rhs;
- return copyOfLeft;
-}
-
-std::ostream& operator<<(std::ostream& stream, const MyString& str)
-{
- stream << str.str;
- return stream;
-}
-
-std::istream& operator>>(std::istream& stream, MyString& str)
-{
- delete[] str.str;
- char buff[1024];
- stream >> buff;
-
- str.size = strlen(buff);
- str.str = new char[str.size + 1];
- strcpy(str.str, buff);
-
- return stream;
-}
-
-bool operator==(const MyString& lhs, const MyString& rhs)
-{
- return strcmp(lhs.c_str(), rhs.c_str()) == 0;
-}
-bool operator<=(const MyString& lhs, const MyString& rhs)
-{
- return strcmp(lhs.c_str(), rhs.c_str()) <= 0;
-
-}
-bool operator<(const MyString& lhs, const MyString& rhs)
-{
- return strcmp(lhs.c_str(), rhs.c_str()) < 0;
-
-}
-
-MyString::MyString(MyString&& otherString)
-{
- str = otherString.str;
- size = otherString.size;
- otherString.str = nullptr;
- std::cout << "move constr" << std::endl;
-}
-
-MyString& MyString::operator=(MyString&& otherString)
-{
- std::cout << "move op=" << std::endl;
-
- if (this != &otherString)
- {
- free();
- str = otherString.str;
- otherString.str = nullptr;
- size = otherString.size;
- }
- return *this;
+#include "MyString.h"
+#include <cstring>
+#include <iostream>
+
+void MyString::copyFrom(const MyString& other)
+{
+ str = new char[strlen(other.str) + 1];
+ strcpy(str, other.str);
+ size = other.size;
+}
+void MyString::free()
+{
+ delete[] str;
+}
+
+MyString::MyString()
+{
+ str = new char[1];
+ str[0] = '\0';
+ size = 0;
+}
+
+MyString::MyString(const char* data)
+{
+ size = strlen(data);
+ str = new char[size + 1];
+ strcpy(str, data);
+}
+
+MyString::MyString(const MyString& other)
+{
+ copyFrom(other);
+}
+MyString& MyString::operator=(const MyString& other)
+{
+ std::cout << "op=" << std::endl;
+
+ if (this != &other)
+ {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+MyString::~MyString()
+{
+ free();
+}
+
+
+size_t MyString::getSize() const
+{
+ return size;
+}
+void MyString::concat(const MyString& other)
+{
+ char* temp = new char[getSize() + other.getSize() + 1];
+ strcpy(temp, str);
+ strcat(temp, other.str);
+
+ delete[] str;
+ str = temp;
+ size = size + other.getSize();
+}
+
+const char* MyString::c_str() const
+{
+ return str;
+}
+
+MyString& MyString::operator+=(const MyString& other)
+{
+ concat(other);
+ return *this;
+}
+
+MyString operator+(const MyString& lhs, const MyString& rhs)
+{
+ MyString copyOfLeft(lhs);
+ copyOfLeft += rhs;
+ return copyOfLeft;
+}
+
+std::ostream& operator<<(std::ostream& stream, const MyString& str)
+{
+ stream << str.str;
+ return stream;
+}
+
+std::istream& operator>>(std::istream& stream, MyString& str)
+{
+ delete[] str.str;
+ char buff[1024];
+ stream >> buff;
+
+ str.size = strlen(buff);
+ str.str = new char[str.size + 1];
+ strcpy(str.str, buff);
+
+ return stream;
+}
+
+bool operator==(const MyString& lhs, const MyString& rhs)
+{
+ return strcmp(lhs.c_str(), rhs.c_str()) == 0;
+}
+bool operator<=(const MyString& lhs, const MyString& rhs)
+{
+ return strcmp(lhs.c_str(), rhs.c_str()) <= 0;
+
+}
+bool operator<(const MyString& lhs, const MyString& rhs)
+{
+ return strcmp(lhs.c_str(), rhs.c_str()) < 0;
+
+}
+
+MyString::MyString(MyString&& otherString)
+{
+ str = otherString.str;
+ size = otherString.size;
+ otherString.str = nullptr;
+ std::cout << "move constr" << std::endl;
+}
+
+MyString& MyString::operator=(MyString&& otherString)
+{
+ std::cout << "move op=" << std::endl;
+
+ if (this != &otherString)
+ {
+ free();
+ str = otherString.str;
+ otherString.str = nullptr;
+ size = otherString.size;
+ }
+ return *this;
} \ No newline at end of file
diff --git a/Sem. 10/MyString/MyString.h b/Sem. 10/Examples/MyString/MyString.h
index 9e54287..334e863 100644
--- a/Sem. 10/MyString/MyString.h
+++ b/Sem. 10/Examples/MyString/MyString.h
@@ -1,41 +1,41 @@
-#pragma once
-
-#include <fstream>
-class MyString
-{
- char* str;
- size_t size;
-
- void copyFrom(const MyString& other);
- void free();
-
-public:
- MyString();
- MyString(const char*);
-
- MyString(const MyString&);
-
- MyString(MyString&&); //move constructor that accepts rvalue;
-
- MyString& operator=(const MyString& other);
- MyString& operator=(MyString&& other); //move op= that accepts rvalue;
-
- ~MyString();
-
- size_t getSize() const;
- void concat(const MyString& other);
-
- const char* c_str() const;
-
- MyString& operator+=(const MyString& other);
-
- friend std::ostream& operator<<(std::ostream& stream, const MyString& str);
- friend std::istream& operator>>(std::istream& stream, MyString& str);
-
-};
-
-MyString operator+(const MyString& lhs, const MyString& rhs);
-
-bool operator==(const MyString& lhs, const MyString& rhs);
-bool operator<=(const MyString& lhs, const MyString& rhs);
-bool operator<(const MyString& lhs, const MyString& rhs);
+#pragma once
+
+#include <fstream>
+class MyString
+{
+ char* str;
+ size_t size;
+
+ void copyFrom(const MyString& other);
+ void free();
+
+public:
+ MyString();
+ MyString(const char*);
+
+ MyString(const MyString&);
+
+ MyString(MyString&&); //move constructor that accepts rvalue;
+
+ MyString& operator=(const MyString& other);
+ MyString& operator=(MyString&& other); //move op= that accepts rvalue;
+
+ ~MyString();
+
+ size_t getSize() const;
+ void concat(const MyString& other);
+
+ const char* c_str() const;
+
+ MyString& operator+=(const MyString& other);
+
+ friend std::ostream& operator<<(std::ostream& stream, const MyString& str);
+ friend std::istream& operator>>(std::istream& stream, MyString& str);
+
+};
+
+MyString operator+(const MyString& lhs, const MyString& rhs);
+
+bool operator==(const MyString& lhs, const MyString& rhs);
+bool operator<=(const MyString& lhs, const MyString& rhs);
+bool operator<(const MyString& lhs, const MyString& rhs);
diff --git a/Sem. 10/Queue.hpp b/Sem. 10/Examples/Queue.hpp
index f9321cc..76e4cf2 100644
--- a/Sem. 10/Queue.hpp
+++ b/Sem. 10/Examples/Queue.hpp
@@ -1,150 +1,150 @@
-#include <iostream>
-#include <exception>
-template <typename T>
-class MyQueue
-{
- T* data;
- size_t capacity;
- size_t size;
-
- size_t get;
- size_t put;
-
- void resize();
-
- void copyFrom(const MyQueue<T>& other);
- void free();
-public:
- MyQueue();
-
- MyQueue(const MyQueue<T>& other);
- MyQueue<T>& operator=(const MyQueue<T>& other);
-
- void push(const T& obj);
- void push(T&& obj); //позволява и местене
- void pop();
-
- const T& peek() const;
- bool isEmpty() const;
-
- ~MyQueue();
-
-};
-
-template <typename T>
-MyQueue<T>::MyQueue()
-{
- capacity = 4;
- data = new T[capacity];
- size = 0;
- get = put = 0;
-}
-
-template <typename T>
-void MyQueue<T>::push(const T& obj)
-{
- if (size == capacity)
- resize();
-
- data[put] = obj; //operator=
- (++put) %= capacity;
- size++;
-}
-
-template <typename T>
-void MyQueue<T>::push(T&& obj)
-{
- if (size == capacity)
- resize();
-
- data[put] = obj; //move operator =
- (++put) %= capacity;
- size++;
-}
-
-template <typename T>
-bool MyQueue<T>::isEmpty() const
-{
- return size == 0;
-}
-
-
-template <typename T>
-const T& MyQueue<T>::peek() const
-{
- if (isEmpty())
- throw std::logic_error("Empty queue!");
-
- return data[get];
-}
-
-template <typename T>
-void MyQueue<T>::pop()
-{
- if (isEmpty())
- throw std::logic_error("Empty queue!");
- (++get) %= capacity;
- size--;
-}
-
-template <typename T>
-void MyQueue<T>::resize()
-{
- T* resizedData = new T[capacity * 2];
- for (size_t i = 0; i < size; i++)
- {
- resizedData[i] = data[get];
- (++get) %= capacity;
- }
- capacity *= 2;
- delete[] data;
- data = resizedData;
- get = 0;
- put = size;
-}
-
-
-template <typename T>
-void MyQueue<T>::copyFrom(const MyQueue<T>& other)
-{
- data = new T[other.capacity];
- for (int i = 0; i < other.capacity; i++)
- data[i] = other.data[i];
-
- get = other.get;
- put = other.put;
-
- size = other.size;
- capacity = other.capacity;
-
-}
-
-template <typename T>
-void MyQueue<T>::free()
-{
- delete[] data;
-}
-
-template <typename T>
-MyQueue<T>::MyQueue(const MyQueue<T>& other)
-{
- copyFrom(other);
-
-}
-
-template <typename T>
-MyQueue<T>& MyQueue<T>::operator=(const MyQueue<T>& other)
-{
- if (this != &other)
- {
- free();
- copyFrom(other);
- }
- return *this;
-}
-
-template <typename T>
-MyQueue<T>::~MyQueue()
-{
- free();
+#include <iostream>
+#include <exception>
+template <typename T>
+class MyQueue
+{
+ T* data;
+ size_t capacity;
+ size_t size;
+
+ size_t get;
+ size_t put;
+
+ void resize();
+
+ void copyFrom(const MyQueue<T>& other);
+ void free();
+public:
+ MyQueue();
+
+ MyQueue(const MyQueue<T>& other);
+ MyQueue<T>& operator=(const MyQueue<T>& other);
+
+ void push(const T& obj);
+ void push(T&& obj); //позволява и местене
+ void pop();
+
+ const T& peek() const;
+ bool isEmpty() const;
+
+ ~MyQueue();
+
+};
+
+template <typename T>
+MyQueue<T>::MyQueue()
+{
+ capacity = 4;
+ data = new T[capacity];
+ size = 0;
+ get = put = 0;
+}
+
+template <typename T>
+void MyQueue<T>::push(const T& obj)
+{
+ if (size == capacity)
+ resize();
+
+ data[put] = obj; //operator=
+ (++put) %= capacity;
+ size++;
+}
+
+template <typename T>
+void MyQueue<T>::push(T&& obj)
+{
+ if (size == capacity)
+ resize();
+
+ data[put] = obj; //move operator =
+ (++put) %= capacity;
+ size++;
+}
+
+template <typename T>
+bool MyQueue<T>::isEmpty() const
+{
+ return size == 0;
+}
+
+
+template <typename T>
+const T& MyQueue<T>::peek() const
+{
+ if (isEmpty())
+ throw std::logic_error("Empty queue!");
+
+ return data[get];
+}
+
+template <typename T>
+void MyQueue<T>::pop()
+{
+ if (isEmpty())
+ throw std::logic_error("Empty queue!");
+ (++get) %= capacity;
+ size--;
+}
+
+template <typename T>
+void MyQueue<T>::resize()
+{
+ T* resizedData = new T[capacity * 2];
+ for (size_t i = 0; i < size; i++)
+ {
+ resizedData[i] = data[get];
+ (++get) %= capacity;
+ }
+ capacity *= 2;
+ delete[] data;
+ data = resizedData;
+ get = 0;
+ put = size;
+}
+
+
+template <typename T>
+void MyQueue<T>::copyFrom(const MyQueue<T>& other)
+{
+ data = new T[other.capacity];
+ for (int i = 0; i < other.capacity; i++)
+ data[i] = other.data[i];
+
+ get = other.get;
+ put = other.put;
+
+ size = other.size;
+ capacity = other.capacity;
+
+}
+
+template <typename T>
+void MyQueue<T>::free()
+{
+ delete[] data;
+}
+
+template <typename T>
+MyQueue<T>::MyQueue(const MyQueue<T>& other)
+{
+ copyFrom(other);
+
+}
+
+template <typename T>
+MyQueue<T>& MyQueue<T>::operator=(const MyQueue<T>& other)
+{
+ if (this != &other)
+ {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+
+template <typename T>
+MyQueue<T>::~MyQueue()
+{
+ free();
} \ No newline at end of file
diff --git a/Sem. 10/Source.cpp b/Sem. 10/Examples/Source.cpp
index d8a6036..57d464f 100644
--- a/Sem. 10/Source.cpp
+++ b/Sem. 10/Examples/Source.cpp
@@ -1,40 +1,40 @@
-#include <iostream>
-#include "MyString/MyString.h"
-#include "Queue.hpp"
-int main()
-{
- {
- MyQueue<size_t> q;
-
- q.push(3);
- q.push(10);
-
- std::cout << q.peek() << std::endl;
- q.pop();
-
- std::cout << q.peek() << std::endl;
- q.pop();
-
- }
- {
- MyQueue<MyString> q;
-
- MyString name = "Ivan";
-
- q.push(std::move(name)); //so it could call push(MyString&&)
-
- MyString name2 = "Petur";
- q.push(name2); //push(const MyString&)
-
- q.push("Alex");//push(MyString&&)
-
- std::cout << q.peek() << std::endl;
- q.pop();
-
- std::cout << q.peek() << std::endl;
- q.pop();
-
- std::cout << q.peek() << std::endl;
- q.pop();
- }
-}
+#include <iostream>
+#include "MyString/MyString.h"
+#include "Queue.hpp"
+int main()
+{
+ {
+ MyQueue<size_t> q;
+
+ q.push(3);
+ q.push(10);
+
+ std::cout << q.peek() << std::endl;
+ q.pop();
+
+ std::cout << q.peek() << std::endl;
+ q.pop();
+
+ }
+ {
+ MyQueue<MyString> q;
+
+ MyString name = "Ivan";
+
+ q.push(std::move(name)); //so it could call push(MyString&&)
+
+ MyString name2 = "Petur";
+ q.push(name2); //push(const MyString&)
+
+ q.push("Alex");//push(MyString&&)
+
+ std::cout << q.peek() << std::endl;
+ q.pop();
+
+ std::cout << q.peek() << std::endl;
+ q.pop();
+
+ std::cout << q.peek() << std::endl;
+ q.pop();
+ }
+}