더북(TheBook)

words를 출력하면 내용이 제거되기 때문에 먼저 words의 복제본을 만든다. top()이 반환한 원소를 출력한 다음에는 pop()을 호출해서 출력한 원소를 제거하고 다음 원소에 접근할 수 있게 한다. 루프 조건절에서는 empty()를 호출해서 모든 원소가 제거되었을 때 루프를 종료한다. words_copy.size()를 사용해 루프 종료 시점을 제어할 수도 있다. words_copy.size()에서 반환하는 값은 암묵적으로 bool로 변환된다. 따라서 size()0을 반환하면 결과는 false가 된다.

words를 위한 입력이 다음과 같다면

one two three four five six seven
^Z

출력은 다음과 같을 것이다.

two three six seven one four five

priority_queue의 내용을 한 번 이상 출력해야 한다면 이를 함수로 만들어 두는 쪽이 더 좋다. 다음 함수처럼 더 범용적인 형태로 만들 수 있다.

template<typename T>
void list_pq(std::priority_queue<T> pq, size_t count = 5)
{
   size_t n{count};
   while (!pq.empty())
   {
     std::cout << pq.top() << ” “;
     pq.pop();
     if (n) continue;
     std::cout << std::endl;
     n = count;
  }
  std::cout << std::endl;
}
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.