template<class T,
class Cont = deque<T> >
class queue {
public:
typedef Cont::allocator_type allocator_type;
typedef Cont::value_type value_type;
typedef Cont::size_type size_type;
explicit queue(const allocator_type& al = allocator_type()) const;
bool empty() const;
size_type size() const;
allocator_type get_allocator() const;
value_type& top();
const value_type& top() const;
void push(const value_type& x);
void pop();
protected:
Cont c;
};
The template class describes an object that controls a varying-length sequence of elements. The object allocates and
frees storage for the sequence it controls through a protected object named c, of class Cont. The type T of elements in
the controlled sequence must match value_type.
An object of class Cont must supply several public members defined the same as for deque and list (both of which
are suitable candidates for class Cont). The required members are:
typedef T value_type;
typedef T0 size_type;
Cont(const allocator_type& al);
bool empty() const;
size_type size() const;
allocator_type get_allocator() const;
value_type& front();
const value_type& front() const;
value_type& back();
const value_type& back() const;
void push_back(const value_type& x);
void pop_front();
Here, T0 is an unspecified type that meets the stated requirements.