Mephistopheles_

templated dynamic class with iterator

Apr 16th, 2021 (edited)
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.93 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. template<typename T>
  4. class mass{
  5.     size_t size=0;
  6.     size_t reserve=0;
  7.     T* arr= nullptr;
  8.     void increase(){
  9.         if(reserve==0)++reserve;
  10.         T* ptr=new T[reserve*2];
  11.         for(int i=0;i<size;++i)
  12.             ptr[i]=arr[i];
  13.         delete[] arr;
  14.         arr=ptr;
  15.         reserve*=2;
  16.     }
  17. public:
  18.     T& operator [](const int &pos){
  19.         return arr[pos];
  20.     }
  21.     size_t get_size() {
  22.         return size;
  23.     }
  24.     size_t get_reserve(){
  25.         return reserve;
  26.     }
  27.     void add_last(const T& a){
  28.         if(size==reserve)
  29.             increase();
  30.         arr[size]=a;
  31.         ++size;
  32.     }
  33.     void delete_last(){
  34.         --size;
  35.     }
  36.     void add(const int& pos,const T& a){
  37.         if(size==reserve)
  38.             increase();
  39.         for(int i=size;i>=pos;--i){
  40.             if(i==pos){
  41.                 arr[i]=a;
  42.                 continue;
  43.             }
  44.             arr[i]=arr[i-1];
  45.         }
  46.         ++size;
  47.     }
  48.     void _delete(const int& pos){
  49.         for(int i=pos;i<size;++i){
  50.             arr[i]=arr[i+1];
  51.         }
  52.         --size;
  53.     }
  54.     T get(const int& pos){
  55.         return arr[pos];
  56.     }
  57.     void show(){
  58.         for(int i=0;i<size;++i)
  59.             cout<<arr[i]<<' ';
  60.         cout<<'\n';
  61.     }
  62.     T* begin(){
  63.         return arr;
  64.     }
  65.     T* end(){
  66.         return &arr[size];
  67.     }
  68.     ~mass(){
  69.         delete[] arr;
  70.     }
  71.     mass(const mass<T>& m){
  72.         this->arr=new T[m.reserve];
  73.         for(int i=0;i<m.size;++i)
  74.             this->arr[i]=m.arr[i];
  75.         this->size=m.size;
  76.         this->reserve=m.reserve;
  77.     }
  78.     mass<T>& operator =(const mass<T>& m){
  79.         delete[] this->arr;
  80.         this->arr=new T[m.reserve];
  81.         for(int i=0;i<m.size;++i)
  82.             this->arr[i]=m.arr[i];
  83.         this->size=m.size;
  84.         this->reserve=m.reserve;
  85.         return *this;
  86.     }
  87.     mass()= default;
  88. };
Add Comment
Please, Sign In to add comment