Я использую std :: queue для реализации класса JobQueue. (В основном этот класс обрабатывает каждое задание в режиме FIFO). В одном сценарии я хочу очистить очередь одним выстрелом (удалить все задания из очереди). Я не вижу никакого ясного метода, доступного в классе std :: queue.Как эффективно очистить std :: queue?
Как эффективно реализовать прозрачный метод для класса JobQueue?
У меня есть одно простое решение, возникающее в цикле, но я ищу лучшие способы.
//Clears the job queue
void JobQueue ::clearJobs()
{
// I want to avoid pop in a loop
while (!m_Queue.empty())
{
m_Queue.pop();
}
}
Примечание [ 'deque'] (http://www.cplusplus.com/reference/deque/deque/ clear /) поддерживает [clear] (http://stackoverflow.com/questions/3874624/why-stdqueue-doesnt-support-clear-function?lq=1) – bobobobo