#include
<algorithm>
void pop_heap (Ran first, Ran last) void pop_heap (Ran first, Ran last, Binary comp) Ran ranges::pop_heap (Range r, Binary comp = {}, proj = {}) Ran ranges::pop_heap (Ran first, Ran last, Binary comp = {}, proj = {})
Vertauscht *first und *(last-1) des als Heap geordneten Bereiches [first,last) und ordnet den vor dem letzten Element liegenden Teilbereich wieder zu einem Heap um.
first | Anfang des Bereiches |
last | Ende des Bereiches |
comp | Vergleichskriterium (Vorgabe = less ) |
proj | einstelliger Funktor (Vorgabe = std::identity ) |
pol | parallele Ausführungsart |
Rückgabewert: Keiner bzw. last
.
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = { 7, 3, 2, 0, 1, 9, 4, 6, 5, 8 }; auto i = std::is_heap_until(begin(v), end(v)); std::vector<int> heap(begin(v), i); for(auto e : v) std::cout << e << " "; std::cout << '\n'; for(auto e : heap) std::cout << e << " "; std::cout << '\n'; if (i != end(v)) { std::push_heap(begin(v), i+1); for(auto e : v) std::cout << e << " "; std::cout << '\n'; std::pop_heap(begin(v), i+1); for(auto e : v) std::cout << e << " "; std::cout << '\n'; } return 0; }