push_heap
Материал из cppreference.com
Синтаксис:
#include <algorithm> void push_heap( random_access_iterator start, random_access_iterator end ); void push_heap( random_access_iterator start, random_access_iterator end, StrictWeakOrdering cmp );
Функция push_heap() добавляет элемент (определенный как последний элемент перед концом) к куче (определенной как диапазон элементов между [start,end-1) ).
Если требуется повышенная точность, вводится упорядочивающая сравнивающая функция-объект cmp, которая используется вместо оператора < для сравнения элементов.
push_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