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

+ Recent posts