Согласно этой странице, существует два определения heap (используется std::make_heap, std::is_heap и т. д.):
До С++20:
Диапазон произвольного доступа [
first,last) представляет собой кучу относительно компараторcomp, еслиbool(comp(first[(i - 1) / 2], first[i]))естьfalseдля всех целых чиселiв (0,last - first).
Начиная с С++20:
Диапазон произвольного доступа [
first,last) является кучей относительно компаратораcomp, если диапазон является кучей относительноcompиstd::identity{}(проекция личности).
У вас есть более простое определение? Например, когда comp — это std::less? Я не понимаю использования.
ОК, большое спасибо, я отредактирую вопрос, удалю примечание об ошибке и позволю запросить более четкое определение.





Наконец-то я нашел ответ в Википедии, heap это:
tree хранится в array,i находится по индексу (i-1)/2max heap (соответственно ниже для min heap).
«в
(0, last - first)» — это эксклюзивный диапазон: ни 0, ниlast - firstне являются его частями. Они заимствовали общепринятые математические обозначения — в одном предложении можно увидеть диапазон[first, last), в который входитfirst, но нетlast. Квадратные скобки означают «включая», скобки означают «исключая», и их можно сопоставлять в любой комбинации. Более подробное определение смотрите в Wiki.