inicio GeNeura cursos

queue<T>

queue<T> implementa una cola simple (antes vimos que existe una cola doblemente terminada, deque). Las dos operaciones más importantes de queue<T> son la inserción y el borrado. Las inserciones siempre se realizan en un extremo y los borrados en el opuesto. A este tipo de estructuras se las denomina FIFO (First In, First Out). Este adaptador puede utilizarse eficientemente con deque<T> y list<T>.


Especificación

template <class T, class Sequence>
class queue {
  friend bool operator== (const queue& x, const queue& y);
  friend bool operator<  (const queue& x, const queue& y);
public:
  typedef Sequence::value_type value_type;
  typedef Sequence::size_type size_type;
  typedef Sequence::reference reference;
  typedef Sequence::const_reference const_reference;

protected:
  Sequence c;

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

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

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

Ejercicios

  1. Escribe programa que pruebe la clase queue.