더북(TheBook)

queue<T> 템플릿에는 operator=()의 복제 버전과 이동 버전이 모두 정의되어 있다. 타입이 같은 원소들을 저장한 queue 객체를 위한 비교 연산자도 모두 정의되어 있고, stack 객체의 비교 연산자와 같은 방식으로 동작한다.

stack과 마찬가지로 queue에도 반복자가 없다. 원소에 접근하는 유일한 방법은 첫 번째 원소를 하나씩 제거하면서 큐 안에 있는 원소들을 처리하는 것뿐이다.

std::deque<double> values {1.5, 2.5, 3.5, 4.5};
std::queue<double> numbers(values);
while (!numbers.empty())                        // 큐 내용을 나열하기...
{
  std ::cout << numbers.front() << " ";         // 첫 번째 원소를 출력
  numbers.pop();                                // 첫 번째 원소를 삭제
}
std::cout << std::endl;

numbers의 내용을 보여주는 루프는 empty()에서 반환하는 값으로 제어해야 한다. empty()를 호출해서 빈 큐에 front()를 호출하지 않게 확인해야 한다. 코드를 보면 queue에 있는 모든 원소에 접근하려면 원소를 삭제해야 한다. 원소를 삭제하고 싶지 않다면 다른 컨테이너에 복사해둬야 한다. 따라서 원소를 삭제하지 않고 모든 원소에 접근하는 작업을 하고 싶다면 queue가 아닌 다른 컨테이너를 사용하는 것이 좋다.

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