之前写代码的时候,定义了一个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 isstd::queue<int>().swap(q)。
stack也没有clear,其清楚方法为stack<int>().swap(st);