bjs*_*123 26 c++ visual-studio-2010 visual-studio-2008
我有这样的要求.对于一个函数,我将输入作为数字流.我的意思是,在每个调用中,函数继续使用单个数字进行调用.我正在使用队列来存储数字流.只有在满足某些条件时,我才需要处理一组收集的数字.如果条件不满足,我需要抛出队列中的所有元素,然后开始在其中存储新数字.为了清空队列,我找不到clear()方法.所以我循环如下.
while(!q.empty())
q.pop();
Run Code Online (Sandbox Code Playgroud)
我得到了有效的清算队列算法
我的问题是:为什么队列不支持clear()函数?
当deque和vector支持clear()方法时,支持队列的技术难度是什么?
或者我的上述用例非常罕见,因此不受支持?谢谢.
sel*_*tze 26
除了已经说过的内容之外,您可以非常轻松地清除队列:
queue<int> q;
...
q = queue<int>(); // Assign an empty queue
Run Code Online (Sandbox Code Playgroud)
或者在C++ 11中
q = {};
Run Code Online (Sandbox Code Playgroud)
Sir*_*ius 21
根据http://www.cplusplus.com/reference/stl/queue/,
队列实现为容器适配器,它是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问它的元素.
这意味着队列使用已经存在的容器,并且实际上是作为FIFO队列的这个容器的接口.
这意味着队列不应该被清除.如果需要清除队列,这意味着您实际上需要使用非队列的对象,因此您应该使用实际的基础容器类型,默认情况下是deque.