小编典典

如何有效地清除 std::queue?

all

我正在使用 std::queue 来实现 JobQueue
类。(基本上这个类以先进先出的方式处理每个作业)。在一种情况下,我想一次性清除队列(从队列中删除所有作业)。我在 std::queue
类中看不到任何可用的明确方法。

如何有效地实现 JobQueue 类的 clear 方法?

我有一个简单的循环弹出解决方案,但我正在寻找更好的方法。

//Clears the job queue
void JobQueue ::clearJobs()
 {
  // I want to avoid pop in a loop
    while (!m_Queue.empty())
    {
        m_Queue.pop();
    }
}

阅读 122

收藏
2022-07-08

共1个答案

小编典典

清除标准容器的一个常见习惯用法是使用空版本的容器进行交换:

void clear( std::queue<int> &q )
{
   std::queue<int> empty;
   std::swap( q, empty );
}

这也是实际清除某些容器内的内存的唯一方法(std::vector)

2022-07-08