inicio GeNeura cursos

stack<T>

stack<T> es un adaptador que sirve para construir una pila a partir de cualquier tipo de contenedor secuencial (vector<T>, deque<T> o lista<T>). El aspecto externo de la pila es el mismo independientemente del tipo de contenedor utilizado para instanciarlo.


Especificación

template <class T, class Sequence>
class stack
{
    friend bool operator== (const stack&, const stack&);
    friend bool operator<  (const stack&, const stack&);

  public:
    typedef Sequence::value_type value_type;
    typedef Sequence::size_type size_type;
    typedef Sequence::reference reference;
    typedef Sequence::const_reference const_reference;

  public:
    bool empty() const { return c.empty(); }
    size_type size() const { return c.size(); }
    reference top() { return c.back(); }
    const_reference top() const { return c.back(); }
    void push(const value_type& x) { c.push_back(x); }
    void pop() { c.pop_back(); }

  protected:
    Sequence c;
};

template <class T, class Sequence>
bool operator==(const stack<T, Sequence>& x, 
                const stack<T, Sequence>& y) 
{
  return x.c == y.c;
}

template <class T, class Sequence>
bool operator<(const stack<T, Sequence>& x, 
               const stack<T, Sequence>& y) 
{
  return x.c < y.c;
}
    

Ejercicios

  1. Escribe una clase pila que se inicialize con 10 valores numéricos de 0 a 9.