gpt4 book ai didi

c++ - 如何有效地清除 std::queue?

转载 作者:IT老高 更新时间:2023-10-28 11:30:29 27 4
gpt4 key购买 nike

我正在使用 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)

关于c++ - 如何有效地清除 std::queue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709146/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com