Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #pragma once
  2.  
  3. template<typename T>
  4. class TArray {
  5.  
  6. public:
  7.     // Add a constructor with initializer_list
  8.     TArray() : // Default constructor
  9.         m_Size{ 0 },
  10.         m_pElements{ nullptr }
  11.     {
  12.        
  13.     }
  14.  
  15.     TArray(size_t size):
  16.         m_Size{ size },
  17.         m_pElements{new T[m_Size]}
  18.     {
  19.  
  20.     }
  21.     ~TArray()       // Default destructor
  22.     {
  23.         // Maybe we should delete all resources. But right now, just delete the array.
  24.         delete[] m_pElements;
  25.     }
  26.  
  27.     int GetQuantity() { return m_Size; }
  28.     T* GetArray() { return m_pElements; }
  29.     const T* GetArray() const { return m_pElements; }
  30.     T& operator[](int i) { return m_pElements[i]; }
  31.     const T& operator[](int i) const { return m_pElements[i]; }
  32.  
  33.     // Insert an element to the end of the array m_size is incremented by 1.
  34.     void Append(const T& element)
  35.     {
  36.         T* pElements = new T[m_Size + 1];
  37.         for (int i = 0; i < m_Size; i++)
  38.         {
  39.             pElements[i] = m_pElements[i];
  40.         }
  41.         pElements[m_Size] = element;
  42.         delete[] m_pElements;
  43.         m_pElements = pElements;
  44.         m_Size++;
  45.     }
  46.  
  47.     // Insert an element into index i so if i >= m_Size m_Size = i+1;
  48.     // if i < m_Size m_pElements[i] = element;
  49.     void SetElement(size_t i, const T& element)
  50.     {
  51.         if (i < m_Size)
  52.         {
  53.             m_pElements[i] = element;
  54.         }
  55.         else
  56.         {
  57.             T* pTempElements = new T[i +1];
  58.             for (size_t aux = 0; aux < i; aux++)
  59.             {
  60.                 pTempElements[aux] = m_pElements[aux];
  61.             }
  62.             pTempElements[i] = element;
  63.             delete[] m_pElements;
  64.             m_pElements = pTempElements;
  65.             m_Size = i;
  66.            
  67.         }
  68.     }
  69.  
  70.     // Remove the element with index i and shift the rest.
  71.     void Remove(int i)
  72.     {
  73.  
  74.     }
  75.  
  76.     // Clean all the elements into the array.
  77.     void RemoveAll()
  78.     {
  79.         delete m_pElements;
  80.         m_Size = 0;
  81.     }
  82.  
  83. private:
  84.     T* m_pElements;
  85.     size_t m_Size;
  86. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement