LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

std::queue をクリアする方法。

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();
    }
};

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4