ranges::pop_heap

ranges::pop_heap (힙에서 최대 원소 제거 — ranges)

힙의 최대 원소를 끝으로 옮기고 나머지를 다시 힙으로 만드는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

std::ranges::pop_heap은 힙 [first, last)의 최대 원소를 last - 1로 옮기고, [first, last-1)을 다시 힙으로 만들어요.

namespace std::ranges {
template< class R, class Comp = ranges::less, class Proj = std::identity >
requires std::random_access_range<R> && std::sortable<ranges::iterator_t<R>, Comp, Proj>
constexpr ranges::borrowed_iterator_t<R> pop_heap( R&& r, Comp comp = {}, Proj proj = {} );
}
  • 복잡도: 최악의 경우 2·log N번의 비교.
std::vector<int> v{9, 5, 6, 1, 3};
std::ranges::make_heap(v);
std::ranges::pop_heap(v);
int top = v.back();   // 9
v.pop_back();

우선순위 큐처럼 최대값을 꺼내는 ranges 버전이에요.

더 알아보기 (Learn more)

cppreference