class T,
class Container = std::deque<T>
The std::queue
class template is a container adaptor that gives the functionality of a queue - specifically, a FIFO (first-in, first-out) data structure.
The class template acts as a wrapper to the underlying container - only a specific set of functions is provided. The queue pushes the elements on the back of the underlying container and pops them from the front.
All member functions ofstd::queue
are constexpr: it is possible to create and use std::queue
objects in the evaluation of a constant expression.
However, std::queue
objects generally cannot be constexpr, because any dynamically allocated storage must be released in the same evaluation of constant expression.
T
is not the same type as Container::value_type
. Container - The type of the underlying container to use to store the elements. The container must satisfy the requirements of SequenceContainer. Additionally, it must provide the following functions with the usual semantics:
back()
, e.g., std::deque::back(),front()
, e.g. std::list::front(),push_back()
, e.g., std::deque::push_back(),pop_front()
, e.g., std::list::pop_front().The standard containers std::deque and std::list satisfy these requirements.
[edit] Member types Member type Definitioncontainer_type
Container
[edit] value_type
Container::value_type
[edit] size_type
Container::size_type[edit] reference
Container::reference
[edit] const_reference
Container::const_reference
[edit] [edit] Member objects Member name Definition the underlying container
queue
queue
#include <cassert> #include <iostream> #include <queue> int main() { std::queue<int> q; q.push(0); // back pushes 0 q.push(1); // q = 0 1 q.push(2); // q = 0 1 2 q.push(3); // q = 0 1 2 3 assert(q.front() == 0); assert(q.back() == 3); assert(q.size() == 4); q.pop(); // removes the front element, 0 assert(q.size() == 3); // Print and remove all elements. Note that std::queue does not // support begin()/end(), so a range-for-loop cannot be used. std::cout << "q: "; for (; !q.empty(); q.pop()) std::cout << q.front() << ' '; std::cout << '\n'; assert(q.size() == 0); }
Output:
[edit] Defect reportsThe following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 307 C++98std::queue
did not support containers using proxy
const
) value_type&
supported LWG 2566 C++98 Missing the requirement for Container::value_type
ill-formed if T
is not the same type as Container::value_type
pop_front()
. The resolution of this DRstd::queue
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4