Bootstrap

关于queue和stack没有clear方法

之前写代码的时候,定义了一个queue<int> q,当想清楚q中的元素时,才发现q是没有clear方法的。后来看了一下资料,才发现queue是基于deque实现的,deque有clear方法,queue没有。

今儿在stackoverflow发现了这么一段话:

A common idiom for clearing standard containers is swapping with an empty version of the container:

void clear( std::queue<int> &q )
{
   std::queue<int> empty;
   std::swap( q, empty );
}

It is also the only way of actually clearing the memory held inside some containers (std::vector)

Better yet is  std::queue<int>().swap(q)。


stack也没有clear,其清楚方法为stack<int>().swap(st);

;