3.3.2 queue 컨테이너의 실제 사용
queue 컨테이너를 사용하는 예제로 살펴보자. 이 프로그램은 마트를 시뮬레이션한다는 점에서 queue가 실제로 쓰이는 방식에 조금은 가깝다. 마트에서는 계산 대기열(queue)의 길이가 중요하다. 계산 대기열이 길면 고객이 줄어들기 때문에 계산 대기열은 마트에서 처리할 수 있는 고객 수에 영향을 미친다. 대기열 문제는 전혀 다른 상황에서도 똑같이 발생할 수 있다. 예를 들어 병원에서 이용할 수 있는 병상 수는 응급치료시설의 운영에 미치는 영향이 매우 크다. 여기서 만들 마트 시뮬레이션은 제한된 동작만 하는 간단한 모델을 선택했다.
시뮬레이션에 필요한 고객을 Customer.h 헤더에 Customer 클래스로 정의하자.
// 고객을 계산대까지 남은 시간으로 정의한다 #ifndef CUSTOMER_H #define CUSTOMER_H class Customer { private: size_t service_t {}; // 계산대까지 남은 시간 public: explicit Customer(size_t st = 10) :service_t {st}{} // 계산대까지 대기 시간을 감소시킨다 Customer& time_decrement() { if(service_t > 0) –service_t; return *this; } bool done() const { return service_t == 0; } }; #endif