我有這樣的要求。對於一個功能,我得到輸入作爲一個數字流。我的意思是,函數在每次調用中都會繼續使用單個號碼進行調用。我正在使用隊列來存儲數字流。只有滿足某些條件時,我才需要處理收集的一組數字。如果條件不滿足,我需要拋出隊列中的所有元素,然後開始存儲新的數字。爲了清空隊列,我找不到clear()方法。所以我像下面一樣循環。爲什麼std :: queue不支持clear()函數?
while(!q.empty())
q.pop();
我得到了有效的算法在
How do I clear the std::queue efficiently?
我的問題清理隊列是:爲什麼隊列不支持clear()函數?
當deque和vector支持clear()方法時,支持queue的技術難度如何?
或者是我的上面的用例非常罕見,因此不支持? 謝謝。
+1,雖然有效的清算*是可能的,請參閱我的答案。 – sellibitze 2010-10-06 16:26:43
所以我認爲'std :: queue'是一個受限制的使用的受損隊列,是消息嗎? – bobobobo 2013-05-24 00:37:04
隊列適配器背後的基本原理是插入的項目必須在某個時刻被提取,並且不會因使用多元素刪除操作而丟失。那有意義嗎 ?不一定,因爲它可以清除反正... – SirDarius 2016-03-27 19:15:44