더북(TheBook)

3.5.1 힙 생성하기

힙을 다루는 함수는 algorithm 헤더에 템플릿으로 정의되어 있다. max_heap() 함수는 랜덤 액세스 반복자로 정의한 원소들을 재배치해서 힙을 만든다. max_heap() 함수는 힙을 만들기 위해
< 연산자를 사용하므로 최대 힙을 만들게 된다. 예제로 확인해보자.

std::vector<double> numbers { 2.5, 10.0, 3.5, 6.5, 8.0, 12.0, 1.5, 6.0};
std::make_heap(std::begin(numbers), std::end(numbers)); // 결과: 12 10 3.5 6.5 8 2.5 1.5 6

make_heap()을 실행한 후에 vector에 있는 원소들은 주석에 표시한 것처럼 재배치된다. 이 결과는 그림 3-5에 표현한 구조를 의미한다.

▲ 그림 3-5 힙으로 표현한 트리

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