Why doesn't std::queue support a clear() function?
Apart from what has been said already, you can clear a queue very easily:
queue<int> q;
...
q = queue<int>(); // Assign an empty queue
or in C++11
q = {};
According to http://www.cplusplus.com/reference/stl/queue/,
queues are implemented as containers adaptors, which are classes that use an encapsulated object of a specific container class as its underlying container, providing a specific set of member functions to access it elements.
which means that the queue uses an already existing container, and is just really is an interface to this container as a FIFO queue.
This means queues are not meant to be cleared. If you need to clear a queue, this means you actually need to use an object that is not a queue, and therefore you should instead use the actual underlying container type, being a deque by default.
queue
is just an adapter for some underlying container, by default a deque
, with restricted function (as you noted here). If you want the full blown function use the underlying deque
instead of queue
.