Ответы хорошие, поэтому я просто хотел добавить небольшой пример. Допустим, у вас есть следующий массив:
array<int, 10> A{5,2,8,3,4,1,9,12,0,7};
и вы хотите создать min heap
. Самый быстрый способ сделать это - использовать алгоритм make_heap
. Тем не менее, это создает max heap
по умолчанию. Другими словами, если вы звоните:
make_heap(A.begin(), A.end());
A
становится max heap
. С другой стороны, чтобы получить min heap
, вам нужно добавить компаратор, но не нужно его реализовывать. Вместо этого вызовите метод следующим образом:
make_heap(A.begin(), A.end(), greater<int>());
Этот вызов сделает ваш массив min heap
.
PS: #include <algorithm>
необходимо использовать std::make_heap
.
Те же операции применимы и к vector
.
НТН!