我正在使用 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(); } }
清除标准容器的一个常见习惯用法是使用空版本的容器进行交换:
void clear( std::queue<int> &q ) { std::queue<int> empty; std::swap( q, empty ); }
这也是实际清除某些容器内的内存的唯一方法(std::vector)