Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- using namespace std;
- template<class T>
- class CustomArray
- {
- private:
- T* elements;
- int size;
- int tempSize = 0;
- T* tempElements = 0;
- bool CheckIndexExists(int index) {
- if (index > size || index < 0) {
- throw std::invalid_argument("No such index exists!");
- }
- }
- public:
- CustomArray(int s)
- {
- size = s;
- elements = new T[size];
- for (int i = 0; i < size; i++)
- elements[i] = 0;
- }
- ~CustomArray()
- {
- delete elements;
- }
- T& operator[](int index)
- {
- CheckIndexExists(index);
- return elements[index];
- }
- T& GetElementAtIndex(int index) {
- return elements[index];
- }
- void operator=(T temp)
- {
- for (int i = 0; i < size; i++)
- elements[i] = temp;
- }
- void PrintArr() {
- for (size_t i = 0; i < size; i++)
- {
- cout << elements[i] << "\n";
- }
- }
- void Clear() {
- tempSize = size;
- size = -1;
- tempElements = elements;
- elements = NULL;
- }
- void Restore() {
- if (size == -1) {
- size = tempSize;
- elements = tempElements;
- }
- }
- int Size() {
- return this->size;
- }
- void SortArrInAscendingOrder() {
- T temp;
- for (int i = 0; i < size; i++)
- {
- for (int j = i + 1; j < size; j++)
- {
- if (elements[j] < elements[i])
- {
- temp = elements[i];
- elements[i] = elements[j];
- elements[j] = temp;
- }
- }
- }
- }
- void RemoveAt(int index)
- {
- if (index < 0 || index >= size)
- {
- throw std::invalid_argument("Index out of range!");
- }
- bool isValueRemoved = false;
- T* newArr = new T[size - 1];
- for (int i = 0; i < size; i++)
- {
- if (i == index)
- {
- isValueRemoved = true;
- continue;
- }
- if (isValueRemoved)
- {
- newArr[i - 1] = elements[i];
- }
- else
- {
- newArr[i] = elements[i];
- }
- }
- if (elements)
- {
- delete elements;
- }
- size--;
- elements = new double[size];
- for (int i = 0; i < size; i++)
- {
- elements[i] = newArr[i];
- }
- delete newArr;
- }
- void Insert(int index, T value)
- {
- if (index < 0 || index > size)
- {
- throw std::invalid_argument("Index out if range!");
- }
- size++;
- T* newArr = new T[size];
- bool isValueInserted = false;
- for (int i = 0; i < size; i++)
- {
- if (i == index)
- {
- newArr[i] = value;
- isValueInserted = true;
- continue;
- }
- if (isValueInserted)
- {
- newArr[i] = elements[i - 1];
- }
- else
- {
- newArr[i] = elements[i];
- }
- }
- if (elements)
- {
- delete elements;
- }
- elements = new double[size];
- for (int i = 0; i < size; i++)
- {
- elements[i] = newArr[i];
- }
- delete newArr;
- }
- };
- int main()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement