Zaibon

Untitled

Nov 23rd, 2011
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. #include "Vecteur.h"
  2.  
  3. //constructeur
  4. template <class T>
  5. Vecteur<T>::Vecteur(){
  6.     tab = NULL;
  7.     occup = NULL;
  8.     setNb(0);
  9.     setSize(0);
  10. }
  11. template <class T>
  12. Vecteur<T>::Vecteur(const int size){
  13.     if(size>0){
  14.         tab = new T[size];
  15.         occup = new char[size];
  16.         memset(occup,0,sizeof(char)*size);
  17.         setNb(0);
  18.         setSize(size);
  19.     }
  20. }
  21. //destructeur
  22. template <class T>
  23. Vecteur<T>::~Vecteur(){
  24.     if(tab) delete [] tab;
  25.     if(occup) delete occup;
  26. }
  27.  
  28. //surcharge
  29. template <class T>
  30. void Vecteur<T>::operator+(const T newElem){
  31.     if(full())
  32.         throw VecteurFull("Plus de place dans le vecteur");
  33.  
  34.     int i;
  35.     for(i=0; i<getSize() && estOccupe(i); i++);
  36.     tab[i] = newElem;
  37.     occup[i] = 1;
  38.     setNb(getNb()+1);
  39. }
  40. //methode
  41. template <class T>
  42. const void Vecteur<T>::affiche()const{
  43.     if(empty())
  44.         return;
  45.  
  46.     for(int i=0;i<getSize();i++){
  47.         if(estOccupe(i)){
  48.             cout << "Elément "<< i << endl << tab[i]; 
  49.         }else{
  50.             cout << "Elément "<< i << " vide";
  51.         }
  52.         cout << endl;
  53.     }
  54. }
  55.  
  56. template <class T>
  57. const T Vecteur<T>::getElement(const int i) const{
  58.     if(indiceValide(i) && estOccupe(i)){
  59.         return tab[i];
  60.     }
  61.     throw InvalidIndiceExceptions("Indice invalide ou place non occupée");
  62. }
  63.  
  64. template <class T>
  65. void Vecteur<T>::setElement(const int i,const T newElem){
  66.     if(indiceValide(i) && !estOccupe(i)){
  67.         tab[i] = newElem;
  68.         occup[i] = 1;
  69.         setNb(getNb()+1);
  70.     }else
  71.         throw InvalidIndiceExceptions("Indice invalide ou place non occupée");
  72. }
  73. template <class T>
  74. T Vecteur<T>::retireElement(const int i){
  75.     if(indiceValide(i) && estOccupe(i)){
  76.         occup[i] = 0;
  77.         setNb(getNb()-1);
  78.         return tab[i];
  79.     }throw InvalidIndiceExceptions("Indice invalide ou place non occupée");
  80. }
Advertisement
Add Comment
Please, Sign In to add comment