우선 순위 대기 열 에 대한 STL

STL 의 priorityqueue [등급]
STL 의 priorityqueue [등급]  STL 우선 대기 열 은 priorityquue 는 매우 간단 해서 원래 아 는 것 이 가장 간단 한 형식 이라는 것 을 알 게 되 었 다.
헤더 파일: \ # include < quue > 우선 대기 열, 즉 우리 가 배 웠 던 더미, 자신 이 정의 한 우선 순위 에 따라 팀 을 나 갈 때.기본 적 인 상황 에서 바 텀 은 Vector 로 이 루어 진 힙 입 니 다.대열 인 만큼 입 대 · 출 대 · 판 공 · 크기 조작 만 있 을 뿐 검색 기능 은 갖 추 지 않 았 다.
함수 목록: empty () 우선 대기 열 이 비어 있 으 면 진짜 로 돌아 갑 니 다.  pop () 첫 번 째 요소 삭제  push () 요소 추가  size () 우선 대기 열 에 있 는 요소 의 개 수 를 되 돌려 줍 니 다.  top () 우선 순위 대기 열 에 최고 우선 순위 가 있 는 요 소 를 되 돌려 줍 니 다.
용 도 는 더 이상 말 할 필요 가 없 겠 지 요. 예 를 들 어 Huff man 인 코딩, 분기 한계, A * 계발 식 은 모두 우선 대기 열 에 정 보 를 저장 해 야 합 니 다.
가장 많이 사용 되 는 몇 가지 기능 을 살 펴 보고 그 중의 지식 점 을 알 아 보 세 요. 첫째, 가장 기본 적 인 기능 \ # include < iostream > \ # include < quue > using namespace std;int main() {     priority_queue Q;     Q.push(2);     Q.push(5);     Q.push(3);     while(!Q.empty())     {            cout<2 차 기본 기능 \ # include < iostream > \ # include < queue > using namespace std; int main () {    int a[5]={3,4,5,2,1};     priority_queue Q(a,a+5);     while(!Q.empty())     {            cout<3. 파악 해 야 할 기능:  #include #include using namespace std;   typedef pair Node;   priority_queue< Node,vector< Node >,greater< Node > > Q;     이 안에 저장 요소 (Node) 를 정 의 했 습 니 다. 바 텀 은 vector 로 이 루어 집 니 다 (두 번 째 매개 변수). 우선 순 위 는 작은 지붕 더미 (세 번 째 매개 변수) 입 니 다.앞의 두 매개 변 수 는 말 할 것 도 없고 이해 하기 쉽 습 니 다. 그 중에서 세 번 째 매개 변 수 는 기본적으로 세 가지 방법 이 있 습 니 다. 작은 지붕 더미: greater < TYPE > 큰 지붕 더미: less < TYPE > 는 우선 순 위 를 정의 하려 면 TYPE 는 기본 유형 이 아니 라 복잡 한 유형 입 니 다. 예 를 들 어 구조 체, 클래스 대상 은 그 중의 operator () 를 다시 불 러 와 야 합 니 다. 아래 의 예 를 들 어 보 세 요.      예: \ # include < iostream > \ # include < queue > namespace std 사용 하기;  //아 날로 그 저장 노드 정보 type: def struct {int a; int b;      }Node; / 사용자 정의 우선 순위 형식 struct cmp {       bool operator()(const Node &t1,const Node &t2)        {             return t1. b < t2. b; / less, 큰 더미 에 해당 합 니 다.           } };
int main() {     //초기 화   int n;    cin>>n;    Node *arr=new Node[n];    for(int i=0;i>arr[i].a>>arr[i].b;           }    //우선 순위 대기 열 을 정의 합 니 다. 사용자 정의 우선 순위 입 니 다. Qsort 에서 사용자 정의 와 비슷 합 니 다.   priority_queue,cmp> Q(arr,arr+n);    while(!Q.empty())    {          Node n=Q.top();          cout<#include <iostream> #include <queue> using namespace std; typedef pair<unsigned long, int> node_type; main() { unsigned long result[1500]; priority_queue< node_type, vector<node_type>, greater<node_type> > Q; Q.push( make_pair(1, 2) ); for (int i=0; i<1500; i++) { node_type node = Q.top(); Q.pop(); switch(node.second) { case 2: Q.push( make_pair(node.first*2, 2) ); case 3: Q.push( make_pair(node.first*3, 3) ); case 5: Q.push( make_pair(node.first*5, 5) ); } result[i] = node.first; } int n; cin >> n; while (n>0) { cout << result[n-1] << endl; cin >> n; } return 1; }

좋은 웹페이지 즐겨찾기