STL queue && priority_queue

2903 단어
queue
먼저 용기 라 는 부분 을 데이터 구조 에서 상세 하 게 소개 하고 구체 적 으로 서술 하지 않 습 니 다.
정의.
queue name;

quue 접근
대기 열 자체 가 선진 적 으로 먼저 나 온 제한 적 인 데이터 구조 이기 때문에 front () 를 통 해 팀 의 첫 번 째 요 소 를 방문 하거나 back () 을 방문 하여 팀 의 꼬리 요 소 를 문의 할 수 밖 에 없다.
queue 상용 함수
  • push () push (x) 는 x 를 팀 에 넣는다
  • front (), back () front () 방문 팀 의 첫 번 째 요소 나 back () 방문 팀 의 꼬리 요소
  • pop () pop () 명령 팀 의 첫 번 째 요소 가 팀 에서 나 왔 다
  • empty () 는 quue 가 비어 있 는 지, true 로 돌아 가면 비어 있 는 지, false 로 돌아 가면 비어 있 지 않 습 니 다
  • size () 는 queue 내 요소 의 개 수 를 되 돌려 줍 니 다
  • queue 흔 한 용도
    범위 우선 검색 이 필요 할 때 front () 와 pop () 함 수 를 사용 하기 전에 empty () 로 대기 열 이 비어 있 는 지 여 부 를 판단 해 야 합 니 다.
    priority_queue
    우선 대기 열의 밑 단 은 더미 로 이 루어 집 니 다. 우선 대기 열 에서 첫 번 째 요 소 는 현재 대기 열 에서 우선 순위 가 가장 높 은 것 입 니 다. 언제든지 대기 열 에 (push) 요 소 를 추가 합 니 다. 우선 대기 열 밑 에 있 는 데이터 구조 더미 (heap) 는 수시로 구 조 를 조정 하여 매번 의 첫 번 째 요 소 를 우선 순위 가 가장 큽 니 다.
    정의.
    priority_queue name;
    

    방문 하 다.
    우선 대기 열 은 front () 와 back () 함수 가 없 으 며, top () 함수 로 만 팀 의 첫 번 째 요 소 를 방문 할 수 있 습 니 다.
    priority_queue 상용 함수
  • push () 입단
  • top () 팀 의 첫 번 째 요소 획득
  • pop () 령 팀 의 첫 번 째 요소 가 팀 에서 나 왔 다
  • empty () 우선 대기 열 이 비어 있 는 지, true 가 비어 있 는 지, false 가 비어 있 지 않 은 지 확인 합 니 다
  • size () 우선 대기 열 내 요소 의 개수
  • priority_queue 내 요소 우선 순위 설정
    우선 대기 열 내 요 소 를 정의 하 는 우선 순위 가 우선 대기 열 을 잘 활용 하 는 관건 입 니 다.
  • 기본 데이터 형식의 우선 순위 설정 int 형, double 형, char 형 등 직접 사용 할 수 있 는 데이터 형식 입 니 다. 우선 순위 설정 은 숫자 가 큰 우선 순위 입 니 다
  • //       
    priority_queue q;  
    priority_queue, less > q;
    

    vector 는 바 텀 데이터 구조 더미 (heap) 를 탑재 하 는 용 기 를 사용 합 니 다. 앞 에 double 또는 char 뒤에 vector 가 있 으 면 vector less 는 숫자 가 큰 우선 순위 가 클 수록 great 는 숫자 가 작은 우선 순위 가 클 수록 가장 작은 요 소 를 팀 의 맨 위 에 놓 습 니 다.
  • 구조 체 의 우선 설정
  • struct fruit{
        string name;
        int price;
        friend bool operator < (fruit f1, fruit f2) {   //friend         <     ,             
            return f1.price < f2.price;         
        } 
    }; 
    //  priority_queue q; 
    //                 ,    return      f1.price > f2.price     
    //   sort   cmp     
    //    great<>  cmp
    struct fruit {
        string name;
        int price;
    }f1, f2, f3;
    struct cmp{
        bool operator() (fruit f1, fruit f2){
            return f1.price > f2.price;
        }
    };
    ...
    priority_queue, cmp> q;
    ...
    

    구조 체 내의 데이터 가 비교적 크 면 (예 를 들 어 문자열 이나 배열 이 나타 나 면) 인용 을 사용 하여 효율 을 높이 는 것 을 권장 합 니 다. 비교 류 는 'const', '&' 를 추가 해 야 합 니 다.
    friend bool operator < (const fruit &f1, const fruit &f2){
        return f1.price < f2.price;
    } 
    bool operator () (const fruit &f1, const fruit &f2){
        return f1.price < f2.price; 
    }
    

    좋은 웹페이지 즐겨찾기