Page d'accueil Description du projet
/******************************************
 *
 *   Cedric Pradalier   2001
 *   mail : http://cedric.pradalier.free.fr/mail.html
 *
 *****************************************/

#ifndef VECTOR_H
#define VECTOR_H
#include "Object.h"

/******************************************

  tableau generique destine a recevoir des Object *
  Sa taille est ajustee en utilisant le principe
  de "Expanding Table" :
  Si NbElem==Size : Size *= 2
  Si NbElem==Size/4 : Size /= 2

  La taille initiale est 2

  La suppression ne maintient pas l'ordre d'insertion :
  la suppression de l'element i echange les elements i et NbElem-1
  et diminue le NbElem de 1.
Ex : 
  T : [........i........n-1]
  suppr(i) : 
  Echange   T : [........n-1........i]
  Reduction     T : [........n-1........]
  
******************************************/


class Vector : public Object
{
public:
    Vector () {NbElem = 0 ; Size = 2 ; tElems = new (Object *)[2];}
    virtual ~Vector () {delete [] tElems;}

/* supprime l'element i */
    void deleteElement(int i);
/* ajoute elem en fin de tableau */
    void addElement(Object * elem);
/* modifie l'elem i */
    void setElement(int i,Object * elem);
/* Reduit le tableau a sa taille minimale */
    void trimToSize();
/* Recupere l'element i */
    Object * operator[](int i);
/* idem, plus facile a appele pour un Vector* */
    Object * elementAt(int i);
/* Renvoie le Nb d'element */
    int size() {return NbElem;}
    
/* Affiche le tableau */
    virtual void Print();
/* Delete sur tous les éléments */
    void deleteAll();


/* Trie le tableau en utilisant la propriete IsBetter */
    void sort();
        


protected:
    int NbElem,Size; 
    Object ** tElems;
};


#endif // VECTOR_H