Leeen

стращная хрень

May 27th, 2019
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. template <typename T> class m_vector
  2. {
  3. private:   
  4.     T *_array;
  5.     int _arraySize;
  6. public:
  7.     void push_back(T data)
  8.     {
  9.         T *_result = new T[++this->_arraySize];
  10.  
  11.         for(int index = 0; index < this->_arraySize; index++)
  12.         {
  13.             if(index != this->_arraySize-1)
  14.             {
  15.                 _result[index] = this->_array[index];
  16.             }
  17.             else
  18.             {
  19.                 _result[index] = data;
  20.                 break;
  21.             }
  22.         }
  23.         delete[] this->_array;
  24.         this->_array = _result;    
  25.     }
  26.  
  27.     T pop()
  28.     {
  29.         return this->popIndex(this->_arraySize-1);
  30.     }
  31.  
  32.     void clear()
  33.     {
  34.         if(this->_array != NULL)
  35.         {
  36.             ::ZeroMemory(this->_array, this->_arraySize);
  37.         }      
  38.         this->_arraySize = 0;
  39.         this->_array = new T[this->_arraySize];
  40.     }  
  41.    
  42.     T operator [](int index)
  43.     {      
  44.         return this->_array[index];    
  45.     }
  46.  
  47.     int size()
  48.     {
  49.         return this->_arraySize;
  50.     }
  51.    
  52.     void pushIndex(T data, int index)
  53.     {
  54.         int oldSize = this->_arraySize;
  55.  
  56.         this->_arraySize = (this->_arraySize >= index) ? (++this->_arraySize) : (this->_arraySize + (index - this->_arraySize));
  57.                
  58.         T *_result = new T[this->_arraySize];
  59.  
  60.         int arrIndex = 0;
  61.  
  62.         for(int index2 = 0; index2 < this->_arraySize; index2++)
  63.         {
  64.             if(index2 == index)
  65.             {
  66.                 _result[index2] = data;
  67.                 continue;                  
  68.             }
  69.                
  70.             if(arrIndex != oldSize)
  71.             {
  72.                 _result[index2] = this->_array[arrIndex++];
  73.             }              
  74.         }
  75.         delete[] this->_array;
  76.         this->_array = _result;    
  77.     }
  78.  
  79.     T popIndex(int index)
  80.     {
  81.         T *_result = new T[--this->_arraySize];
  82.        
  83.         T resItem;
  84.  
  85.         int resIndex = 0;
  86.  
  87.         for(int index2 = 0; index2 < this->_arraySize+1; index2++)
  88.         {
  89.             T item = this->_array[index2];
  90.  
  91.             if(index == index2)
  92.             {
  93.                 resItem = item;
  94.                 continue;
  95.             }
  96.             _result[resIndex++] = this->_array[index2];
  97.         }
  98.         delete[] this->_array;
  99.         this->_array = _result;
  100.         return resItem;
  101.     }
  102.  
  103.     m_vector()
  104.     {
  105.         this->_arraySize = 0;
  106.         this->_array = new T[this->_arraySize];    
  107.     }  
  108. };
Add Comment
Please, Sign In to add comment