std::queue をクリアする方法。
clear()しようと思ったらできませんでした・・・。
clear()メソッドがなかったので調べました。
感謝
http://stackoverflow.com/questions/709146/how-do-i-clear-the-stdqueue-efficiently
stdコンテナのクリアについては、空のコンテナとswapするというイディオムがあるらしい。
void clear( std::queue<int> &q )
{
std::queue<int> empty;
std::swap( q, empty );
}
上記は下記と同義
std::queue<int>().swap(q)
追記:
上記リンクに以下のような記載があって、なるほどなと思いました。
コンテナを継承してClearメソッドを追加する方法。ー>このメソッドで元のコンテナオブジェクトをクリアさせるという。
template<class T>
class queue_clearable : public std::queue<T>
{
public:
void clear()
{
c.clear();
}
};