우선 순위 정의

한 요리 의 성장 을 기록 하 다.
우선 순위 변경 에 대한 정 의 를 기록 하 십시오.
이것 은 stl 에서 정의 한 비교 구조 입 니 다. 우 리 는 모두 greater 를 사용 하 는 것 이 작은 지붕 더미 이 고 less 는 큰 지붕 더미 이 며 기본 값 은 less 라 는 것 을 알 고 있 습 니 다.
/// One of the @link comparison_functors comparison functors@endlink.
  template
    struct greater : public binary_function<_tp _tp="" class="hljs-keyword">bool>
    {
      bool operator()(const _Tp& __x, const _Tp& __y) const
      { return __x > __y; }
    };

 /// One of the @link comparison_functors comparison functors@endlink.
  template
    struct less : public binary_function<_tp _tp="" class="hljs-keyword">bool>
    {
      bool operator()(const _Tp& __x, const _Tp& __y) const
      { return __x < __y; }
    };

만약 에 우리 가 구 조 를 정의 하면 이렇게 가설 을 써 서 구 조 를 정의 할 수 있다.
struct Node{
    int x,y,z;
}

우 리 는 위의 비교 구 조 를 모방 하여 스스로 비교 구 조 를 정의 한다. 예 를 들 어
struct cmp{
    bool operator () (const Node& a,const Node& b) const{
        return a.y < b.y;//   ,,  >    
    }
}

우선 순위 대기 열 을 만 들 때 이렇게 쓰 세 요.
priority_queuevector,cmp>q;

우 리 는 또한 연산 자 를 다시 불 러 와 서 우선 순 위 를 정의 할 수 있다. 예 를 들 어
struct Node{
    int x,y,z;
    friend bool operator > (const Node& a,const Node& b){
        return a.x > b.x; //greater,   
    } 
    friend bool operator < (const Node& a,const Node& b){
        return a.x < b.x;//less,    
    } 
}

우 리 는 이렇게 우선 대기 열 을 만 들 수 있다.
priority_queuevector,greater >q;
priority_queuevector,less >q;

좋은 웹페이지 즐겨찾기