Moron / Aryabhatta tiene razón, pero un poco más de detalle puede ser útil.
La cola y la pila son contenedores de nivel superior que deque, vector o list. Con esto, quiero decir que puede crear una cola o apilar los contenedores de nivel inferior.
Por ejemplo:
std::stack<int, std::deque<int> > s;
std::queue<double, std::list<double> > q;
Construirá una pila de entradas usando una deque como contenedor subyacente y una cola de dobles usando una lista como contenedor subyacente.
Puede pensar s
en una deque restringida y q
como una lista restringida.
Todo lo que se necesita es que el contenedor de nivel inferior implemente los métodos que necesita el contenedor de nivel superior. Estos son back()
, push_back()
y pop_back()
para la pila y front()
, back()
, push_back()
, ypop_front()
para la cola.
Consulte pila y cola para obtener más detalles.
Con respecto a la deque, es mucho más que una cola donde se puede insertar en ambos extremos. En particular, tiene acceso aleatorio operator[]
. Esto lo hace más como un vector, pero un vector donde puede insertar y eliminar al principio con push_front()
y pop_front()
.
Consulte la etiqueta para obtener más detalles.
stack
yqueue
simplemente restringirdeque
su conjunto completo de funciones.