有谁知道为什么std :: queue,std :: stack和std :: priority_queue不提供clear()
成员函数?我必须假装这样一个:
std::queueq; // time passes... q = std::queue (); // equivalent to clear()
IIRC clear()
由可用作底层容器的所有东西提供.有没有充分的理由没有容器适配器提供它?
好吧,我认为这是因为clear
在队列,priority_queue或堆栈上不被视为有效操作(顺便说一句,deque不是,而适配器是容器).
使用容器适配器队列而不是容器双端队列的唯一原因是要明确表示您只执行队列操作,而不执行其他操作.(来自队列上的sgi页面)
所以当使用队列时,你所能做的就是推/弹元素; 清除队列可以被视为违反FIFO概念.因此,如果您需要清除队列,可能它不是真正的队列,您应该更好地使用双端队列.
然而,这种事物的概念有点狭隘,我认为像你一样清理队列是公平的.
Deque有明确的().参见,例如,http://www.cplusplus.com/reference/stl/deque/clear.html.
但是,队列没有.但是,为什么你会选择队列而不是deque呢?
使用容器适配器队列而不是容器双端队列的唯一原因是要明确表示您只执行队列操作,而不执行其他操作.
(http://www.sgi.com/tech/stl/queue.html)
所以我猜clear()不是队列操作.