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 sen una deque restringida y qcomo 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.
     
                
stackyqueuesimplemente restringirdequesu conjunto completo de funciones.Queue: puede insertar solo en un extremo y quitar del otro.Deque: puede insertar y quitar de ambos extremos.Entonces, usando a
Deque, puede modelarQueuetanto a como aStack.Sugerencia:
Dequees la abreviatura de " D OBLE e nded Que ue".fuente
queueno satisface los requisitos de un contenedor. No tiene iteradores, ¡por el amor de Dios!std::stackutiliza astd::dequecomo contenedor de respaldo de forma predeterminada. Especulo sobre la razón aquí: stackoverflow.com/questions/102459/… (básicamente, el crecimiento de adequees una sobrecarga baja).dequees una plantilla de contenedor. Satisface los requisitos para una secuencia con iteradores de acceso aleatorio, muy parecido a unvector.queueno es un contenedor en absoluto, es un adaptador . Contiene un contenedor y proporciona una interfaz diferente y más específica. Úseloqueuecuando desee recordar (o recordar) para evitar operaciones además depush[_back]ypop[_front],frontyback,sizeyempty. ¡No puedes mirar los elementos dentro delqueueademás del primero y el último, en absoluto!fuente
En la biblioteca de C ++, ambos
std::stackystd::queuese implementan como adaptadores de contenedor . Eso significa que proporcionan la interfaz de una pila o una cola respectivamente, pero ninguno es realmente un contenedor en sí mismo. En su lugar, usan algún otro contenedor (por ejemplo,std::dequeostd::listpara almacenar realmente los datos), y lastd::stackclase solo tiene un poco de código para traducirpushypophaciapush_backypop_back(ystd::queuehace aproximadamente lo mismo, pero usandopush_backypop_front).fuente
queue, VS también parece asignarpopapop_front, ypushquepush_back, por lo que supongo que esto depende de la implementación.pop_frontypush_backson lo que se requiere. Mis disculpas.Una deque es una cola de dos extremos, que permite una fácil inserción / extracción desde cualquier extremo. Las colas solo permiten la inserción en un extremo y la recuperación del otro.
fuente
deque admite insertar / pop desde atrás y adelante
la cola solo admite insertar en la parte posterior y pop desde el frente. Ya sabes, un FIFO (primero en entrar, primero en salir).
fuente
Un deque tiene dos extremos. Una cola no lo es.
fuente
por Mike Anderson aquí:
https://www.quora.com/What-is-the-difference-between-a-priority-queue-and-a-queue
fuente
En deque (cola de dos extremos) El elemento se puede insertar desde atrás y quitar de forma posterior (igual que la pila), pero en la cola solo se puede quitar desde el frente.
fuente