더북(TheBook)

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
 

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