STL의 Queue 컨테이너 경우 다른 컨테이너와 다르게 clear 멤버 변수가 없습니다. 그래서 이를 초기화 해주려고 하면, 아래와 같이 일일히 루프를 돌며 pop을 해주거나하죠
while (!mQueue.empty()) { mQueue.pop(); }
좀더 좋은 방법이 없을까 스택오버플로우를 검색 하던 중 아래와 같은 방법을 찾아냈습니다.
void ClearQueue(std::queue<int> &someQueue) { std::queue<int> empty; std::swap(someQueue, empty); }
algorithm의 swap을 이용해 빈 큐와 바꿔치기 하는 방식이죠. 글 쓴이는 이 같은 방법이 실제 queue내의 메모리를 해제함과 동시에 queue를 초기화 할수 있다고 합니다.
참조 : http://stackoverflow.com/questions/709146/how-do-i-clear-the-stdqueue-efficiently