std :: queue - это просто оболочка вокруг других типов контейнеров STL, по умолчанию std :: deque, но также возможно std :: list или std :: vector.Когда ваша очередь выходит из области видимости, автоматически запускается деструктор нижележащего контейнера.
Если вы хотите вручную освободить память, занятую очередью, и тип данных вашей очереди является примитивным (int, float, ...) или имеет правильный деструктор (большинство, если не все типы данных STL), вы можете сделать это в C ++ 11 и более поздних версиях:
std::queue<your_type>().swap(your_queue);
или для более старых версий:
{
std::queue<your_type> temp;
std::swap(temp, your_queue);
}
Он создает пустую очередь, обменивает ее содержимое с вашей очередью и уничтожает ее (потому что она выходит из области видимости сразу после обмена), оставляя в руке только пустую.
Если вы используете очередь нестандартного типа, у которой нет надлежащего деструктора, я думаю, что единственный способ - это вытащить элементы один за другим и вручную освободить память всплывающего элемента.