sort_heap
Материал из cppreference.com
Синтаксис:
#include <algorithm> void sort_heap (random_access_iterator start, random_access_iterator end); void sort_heap (random_access_iterator start, random_access_iterator end, StrictWeakOrdering cmp);
Функция sort_heap() превращает кучу [start,end) в отсортированный диапазон.
Если требуется повышенная точность, вводится упорядочивающая функция-объект cmp, которая используется для сравнения двух элементов вместо оператора <.
Пример:
// пример range heap #include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { int myints[] = {10,20,30,5,15}; vector<int> v(myints,myints+5); vector<int>::iterator it; make_heap (v.begin(),v.end()); cout << "initial max heap : " << v.front() << endl; pop_heap (v.begin(),v.end()); v.pop_back(); cout << "max heap after pop : " << v.front() << endl; v.push_back(99); push_heap (v.begin(),v.end()); cout << "max heap after push: " << v.front() << endl; sort_heap (v.begin(),v.end()); cout << "final sorted range :"; for (unsigned i=0; i<v.size(); i++) cout << " " << v[i]; cout << endl; return 0; }
Вывод:
initial max heap : 30 max heap after pop : 20 max heap after push: 99 final sorted range : 5 10 15 20 99