Морон / Арьябхатта правильний, але трохи більше деталей може бути корисним.
Черга та стек - це контейнери вищого рівня, ніж 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
повний набір функцій.