Морон / Арьябхатта правильний, але трохи більше деталей може бути корисним.
Черга та стек - це контейнери вищого рівня, ніж deque, vector або list. Під цим я маю на увазі, що ви можете створити чергу або скласти контейнери нижчого рівня.
Наприклад:
std::stack<int, std::deque<int> > s;
std::queue<double, std::list<double> > q;
Побудує стек ints, використовуючи deque як базовий контейнер, і чергу вдвічі, використовуючи список як базовий контейнер.
Ви можете сприймати це sяк заборонену дію та qяк обмежений список.
Все, що потрібно, це те, що контейнер нижчого рівня реалізує методи, необхідні контейнеру більш високого рівня. Це back(), push_back()і pop_back()для стека і front(), back(), push_back(), і pop_front()для черги.
Докладніше див. Стек і черга .
Що стосується декеля, це набагато більше, ніж черга, куди ви можете вставити обидва кінці. Зокрема, він має довільний доступ operator[]. Це робить його більше схожим на вектор, але вектор, куди ви можете вставити та видалити на початку за допомогою push_front()і pop_front().
Детальніше див. У deque .
stackіqueueпросто обмежитиdequeповний набір функцій.