Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template <typename T> class DiyVector
  5. {
  6.     private:
  7.         int elSize;
  8.         int totalSize;
  9.         T* elements;
  10.     public:
  11.         DiyVector()
  12.         {
  13.             elSize = 0;
  14.             totalSize = 0;
  15.             elements = new T [totalSize];
  16.         }
  17.         ~DiyVector()
  18.         {
  19.             delete[] elements;
  20.         }
  21.  
  22.         T& at(unsigned int index) const
  23.         {
  24.             if (index > elSize - 1 || index < 0)
  25.             {
  26.                 throw std::runtime_error ("OutOfRange");
  27.             }
  28.             else
  29.             {
  30.                 return elements[index];
  31.             }  
  32.         };
  33.  
  34.         unsigned int size() const
  35.         {
  36.             return elSize;
  37.         }
  38.  
  39.         void pushBack(const T& item)
  40.         {
  41.             if (elSize < totalSize)
  42.             {
  43.                 elements[elSize - 1] = item;
  44.                 elSize++;
  45.             }
  46.             else
  47.             {
  48.                 totalSize++;
  49.                 T* temp = new T[totalSize];
  50.                 for(int i = 0; i < totalSize; i++)
  51.                 {
  52.                     temp[i] = elements[i];
  53.                 }
  54.                
  55.                 delete[] elements;
  56.                 elements = temp;
  57.                 pushBack(item);
  58.             }
  59.         }
  60.         // append item at the end of vector
  61.  
  62.         void popBack()
  63.         {
  64.             elSize--;
  65.         }
  66.         // remove item at the end of vector
  67.         // throws OutOfRan
  68.  
  69.         void erase(unsigned int index)
  70.         {
  71.             if(index > elSize - 1|| index < 0)
  72.             {
  73.                 throw std::runtime_error ("OutOfRange");
  74.             }
  75.  
  76.             if(index == elSize)
  77.             {
  78.                 popBack();
  79.             }
  80.             else
  81.             {
  82.                 for (int i = index; i < elSize - 1; i++)
  83.                 {
  84.                     elements[i] = elements[i + 1];
  85.                 }
  86.                 erase(index);
  87.             }
  88.         }
  89.         // remove element at index
  90.         // throws OutOfRange
  91.  
  92.         void print()
  93.         {
  94.             for(int i = 0; i < elSize - 1; i++)
  95.             {
  96.                 std::cout << elements[i] << " ";
  97.             }
  98.         }
  99.  
  100.         void insert(unsigned int index, const T& item)
  101.         {
  102.             if(elSize < totalSize)
  103.             {
  104.                 for (int i = index; i < elSize - 1; i++)
  105.                 {
  106.                     elements[i + 1] = elements[i];
  107.                 }
  108.                 elements[index] = item;
  109.                 elSize++;
  110.             }
  111.             else
  112.             {
  113.                 totalSize++;
  114.                 T* temp = new T[totalSize];
  115.                 for(int i = 0; i < totalSize - 1; i++)
  116.                 {
  117.                     temp[i] = elements[i];
  118.                 }
  119.                 delete[] elements;
  120.                 elements = temp;
  121.                 insert(index, item);
  122.             }
  123.         }
  124.         // insert item before element at index, with:
  125.         // 0 <= index <= size()
  126.         // throws OutOfRange
  127.  
  128.         class OutOfRange
  129.         {};
  130. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement