STL 원자로 작동
4092 단어 STL
만약에 두 갈래 나무의 깊이를 h로 설정하면 h층을 제외한 다른 각 층(1~h-1)의 결점은 모두 최대 개수에 달하고 h층의 모든 결점은 연속적으로 맨 왼쪽에 집중된다. 이것이 바로 전연 두 갈래 나무이다.1차원 수조를 전연 두 갈래 나무책으로 보는 것은 무더기다.
쌓다의 효율이 매우 높다.자주 사용하는 정렬 알고리즘, Dijkstra 알고리즘, Prim 알고리즘 등은 모두 재능을 쌓아 최적화해야 한다. 하마터면 매번 시험할 뻔한 두 갈래 정렬 트리의 효율도 밸런싱성을 빌려 높여야 하고 균형성은 전연 두 갈래 나무를 바탕으로 한다.
STL에서 더미와 관련된 4가지 함수 - 더미 만들기 make_heap(), 더미에 데이터 push_ 추가heap().더미에서 데이터 삭제pop_heap() 및 무더기 정렬 sort_heap():
헤더 파일#include
다음의_First와_마지막으로 랜덤으로 액세스할 수 있는 교체기(포인터)입니다._Comp는 비교 함수(모방 함수)이며, 그 규칙은 함수의 첫 번째 매개 변수가 두 번째 매개 변수보다 작다면true를 되돌려야 하고, 그렇지 않으면false를 되돌려야 한다고 가정합니다.
쌓다
make_heap(_First, _Last, _Comp)
기본값은 최대 더미입니다.int 형식에 대해 세 번째 매개 변수가greater
더미에 데이터를 넣다
push_heap (_First, _Last)
용기에 데이터를 추가하고push_heap ()
더미에서 데이터 삭제
pop_heap(_First, _Last)
팝을 먼저 호출해야 돼요_heap () 용기에서 데이터 삭제
무더기 정렬
sort_heap(_First, _Last)
정렬 후에는 더 이상 합법적인 힙이 아니다
#include <cstdio>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
void PrintfVectorInt(vector<int> &vet)
{
for (vector<int>::iterator pos = vet.begin(); pos != vet.end(); pos++)
printf("%d ", *pos);
putchar('
');
}
int main()
{
const int MAXN = 20;
int a[MAXN];
int i;
for (i = 0; i < MAXN; ++i)
a[i] = rand() % (MAXN * 2);
// vector vector
vector<int> *pvet = new vector<int>(40);
pvet->assign(a, a + MAXN);
//
make_heap(pvet->begin(), pvet->end());
PrintfVectorInt(*pvet);
// 。 push_heap()
pvet->push_back(25);
push_heap(pvet->begin(), pvet->end());
PrintfVectorInt(*pvet);
// pop_heap(),
pop_heap(pvet->begin(), pvet->end());
pvet->pop_back();
pop_heap(pvet->begin(), pvet->end());
pvet->pop_back();
PrintfVectorInt(*pvet);
//
sort_heap(pvet->begin(), pvet->end());
PrintfVectorInt(*pvet);
delete pvet;
return 0;
}
판권 성명: 본고의 블로그 오리지널 글, 블로그는 동의 없이 전재할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STL 원자로 작동먼저 전연 두 갈래 나무의 정의를 살펴보자. 만약에 두 갈래 나무의 깊이를 h로 설정하면 h층을 제외한 다른 각 층(1~h-1)의 결점은 모두 최대 개수에 달하고 h층의 모든 결점은 연속적으로 맨 왼쪽에 집중된다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.