Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- template <typename T> class DiyVector
- {
- private:
- int elSize;
- int totalSize;
- T* elements;
- public:
- DiyVector()
- {
- elSize = 0;
- totalSize = 0;
- elements = new T [totalSize];
- }
- ~DiyVector()
- {
- delete[] elements;
- }
- T& at(unsigned int index) const
- {
- if (index > elSize - 1 || index < 0)
- {
- throw std::runtime_error ("OutOfRange");
- }
- else
- {
- return elements[index];
- }
- };
- unsigned int size() const
- {
- return elSize;
- }
- void pushBack(const T& item)
- {
- if (elSize < totalSize)
- {
- elements[elSize - 1] = item;
- elSize++;
- }
- else
- {
- totalSize++;
- T* temp = new T[totalSize];
- for(int i = 0; i < totalSize; i++)
- {
- temp[i] = elements[i];
- }
- delete[] elements;
- elements = temp;
- pushBack(item);
- }
- }
- // append item at the end of vector
- void popBack()
- {
- elSize--;
- }
- // remove item at the end of vector
- // throws OutOfRan
- void erase(unsigned int index)
- {
- if(index > elSize - 1|| index < 0)
- {
- throw std::runtime_error ("OutOfRange");
- }
- if(index == elSize)
- {
- popBack();
- }
- else
- {
- for (int i = index; i < elSize - 1; i++)
- {
- elements[i] = elements[i + 1];
- }
- erase(index);
- }
- }
- // remove element at index
- // throws OutOfRange
- void print()
- {
- for(int i = 0; i < elSize - 1; i++)
- {
- std::cout << elements[i] << " ";
- }
- }
- void insert(unsigned int index, const T& item)
- {
- if(elSize < totalSize)
- {
- for (int i = index; i < elSize - 1; i++)
- {
- elements[i + 1] = elements[i];
- }
- elements[index] = item;
- elSize++;
- }
- else
- {
- totalSize++;
- T* temp = new T[totalSize];
- for(int i = 0; i < totalSize - 1; i++)
- {
- temp[i] = elements[i];
- }
- delete[] elements;
- elements = temp;
- insert(index, item);
- }
- }
- // insert item before element at index, with:
- // 0 <= index <= size()
- // throws OutOfRange
- class OutOfRange
- {};
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement