//deux lignes suivantes : pour les entrees/sorties
#include <iostream>
using namespace std;


//la classe vector
template <class element> class vectorr
{
         element *tab;
         int size;
         
         public :
                vectorr()
                {
                         tab = new element;
                         size = 0;
                }
                vectorr(int sizesrc, element* elt)
                {
                     tab=elt;
                     size=sizesrc;          
                }
                ~vectorr()
                {
                      delete[] tab;
                      delete &size;
                };
             
             
             int getsize()
             {
                      return size;
             };
             element getvalue(int i)
             {
                   return tab[i];
             };
             void add(element elt)
             {
                  tab = (element*) realloc (tab, sizeof(tab)+sizeof(elt));
                  tab[size]=elt;
                  size=size+1;             
             };
             void suppr(int num)
             {
                  element *tab_tmp = new element;
                  element elt;
                  int i=num;
                  while(i<size)
                  {
                        elt=tab[i];
                        tab_tmp = (element*) realloc (tab_tmp, sizeof(tab)+sizeof(elt));
                        tab_tmp[i]=elt;
                        i++; 
                  }
                  i=num;
                  while(i<size-1)
                  {
                                 tab[i]=tab_tmp[i+1];
                                 i++;
                  }
                  delete &tab[size-1];
                  size--;       
             }
};



int main(void)
{
    //instanciation d'une chaine
    vectorr<int> v1;
    
    v1.add(4);
    v1.add(2);
    v1.add(7);
    int i;
    for(i=0; i<v1.getsize(); i++)
    {
             cout<<v1.getvalue(i)<<endl;
    }
    cout<<"suppression de la seconde valeur"<<endl;
    v1.suppr(1);
    for(i=0; i<v1.getsize(); i++)
    {
             cout<<v1.getvalue(i)<<endl;
    }
    //suppression de la chaine c1
    delete &v1;
    
        //fonction bloquante
    char a ;
    cin>>a;
}

