Кучи * почти всегда реализуются с использованием массива в качестве базовой структуры данных.В качестве такового можно рассматривать набор алгоритмов, которые оперируют структурой данных массива.Это путь, по которому STL пошел при реализации кучи - он будет работать с любой структурой данных, имеющей итераторы произвольного доступа (стандартный массив, вектор, deque и т. Д.).
Вы также заметите, чтоSTL priority_queue требует контейнера (который по умолчанию является вектором).По сути, это ваш контейнер кучи - он реализует кучу в вашей базовой структуре данных и предоставляет контейнер-оболочку для всех типичных операций кучи.
* В частности, двоичные кучи.Других форм кучи (биномиальные, фибоначчи и т. Д.) Нет.