为什么 std::queue 不支持功能 clear//?

我有一个要求:对于函数,我以数字线程的形式获得输入数据。 我的意思是在每个呼叫中​​继续使用一个号码调用该函数。 我用
std::queue

用于存储数字流。 只有在执行某些条件时,我需要仅处理组装的数字集。 如果未执行条件,则需要将队列中的所有元素放在队列中,然后在那里开始保持新数字。 要清空队列,我找不到方法
clear//

. 所以我像这样专注:


while/!q.empty///
q.pop//;


我有一种有效的清洁算法
std::queue



https://coderoad.ru/709146/
我的问题是:为什么
std::queue

不支持功能
clear//

?

只要
std::deque


std::vector

支持方法
clear//

, 支持的技术难度是多少?
std::queue

?

或者我以上使用非常罕见,因此不支持?
已邀请:

冰洋

赞同来自:

除了已经说过的话,你

你可以

很容易清除线路:


queue<int> q;
...
q = queue<int>//; // Assign an empty queue


或者 C++11 年


q = {};


</int></int>

窦买办

赞同来自:

根据
http://www.cplusplus.com/reference/stl/queue/
/ ,

队列实现为使用一类容器的封装对象作为基础容器的类的容器适配器,提供特定的成员函数来访问其元素。

这意味着队列使用现有容器,并且它只是将此容器作为队列的真正接口。 FIFO.

这意味着队列不适用于清洁。 如果需要清除队列,这意味着您真的需要使用不是队列的对象,因此您应该使用实际的基本类型的容器,即 deque 默认。

快网

赞同来自:

queue

- 它只是一些基础容器的适配器,默认 a
deque

, 功能有限 /你是怎么在这里注意到的/. 如果要使用满量程函数,请使用基本
deque

反而
queue

.

詹大官人

赞同来自:

将其添加到我越来越多的函数列表中 STL 可读取的 :


template <typename t=""> 
void Clear/std::queue<t>&amp; Queue/
{
Queue = std::queue<t>//; // Assign to empty queue
}


这只是围绕Sellibitz的出色反应的包装,但这意味着每次使用此技术时都不需要添加评论。
</t></t></typename>

要回复问题请先登录注册