problème avec une pile

problème avec une pile - C++ - Programmation

Marsh Posté le 26-11-2005 à 20:54:08    

Je suis un débutant en c++ et je dois réaliser une classe pile (grand classique) avec une surcharge de l'opérateur "<<" pour emplier. Cet opérateur doit avoir le même type de fonctionnement que celui utilisé avec les flux
 
voici la méthode que j'ai fait:
 
template <class T> T* LIFO<T>::operator <<(T t){
 pile[nbElem] = t;
 nbElem = nbElem + 1;
 return pile;
}

Reply

Marsh Posté le 26-11-2005 à 20:54:08   

Reply

Marsh Posté le 26-11-2005 à 21:25:25    

Code :
  1. template <typename T>
  2. class LIFO
  3. {
  4. public :
  5.    LIFO() {}
  6.    LIFO& operator<<(const T& t)
  7.    {
  8.       m_stack.push_back(t);
  9.       return *this;
  10.    }
  11.    LIFO& pop(void)
  12.    {
  13.       if (this->size() == 0)
  14.       {
  15.           // gerer l'erreur
  16.       }
  17.       else
  18.           m_stack.resize(m_stack.size() - 1);
  19.       return *this;
  20.    }
  21.    T& top(void)
  22.    {
  23.       return m_stack.back();
  24.    }
  25.    const T& top(void) const
  26.    {
  27.       return m_stack.back();
  28.    }
  29.    size_t size(void) const
  30.    {
  31.       return m_stack.size();
  32.    }
  33. private :
  34.    vector<T> m_stack;
  35. };
  36. LIFO<int> p;
  37. p << 3;
  38. cout << p.top() << '\n';   // 3
  39. p << 42 << 43 << 44;
  40. cout << p.top() << '\n';   // 44
  41. p.top() = 56;
  42. cout << p.top() << '\n';   // 56
  43. p.pop();
  44. cout << p.top() << '\n';   // 43


Message édité par jesus_christ le 26-11-2005 à 21:28:33
Reply

Marsh Posté le 26-11-2005 à 21:58:57    

merci je vais tester ça!

Reply

Marsh Posté le 27-11-2005 à 11:49:25    

j'ai pas tester chez moi mais aux erreurs près ça devrait marcher
 
si t'as une âme de mauvais joueur tu peux tenter :
 

Code :
  1. template <typename T>
  2. class LIFO : public stack<T>
  3. {
  4.    LIFO() {}
  5.    LIFO& operator<<(const T& t)
  6.    {
  7.       push(t);
  8.       return *this;
  9.    }
  10. };


 
mais c'est un peu trop facile :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed