push_heap()はヒープから要素を取り出します。
書式は次の通りです。
#include <algorithm>
template void push_heap(riter first, riter last);
template void push_heap(riter first, riter last, pred pr);
引数firstは最初の要素の反復子、lastは最後の要素の反復子です。
次の例はヒープを作成して操作するプログラムの例です。
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{
vector<int> v1;
for (int i=0; i<5; i++)
v1.push_back(i+1);
push_heap(v1.begin(),v1.end());
// コンテナの内容を出力する
ostream_iterator<int,char> out(cout," ");
copy(v1.begin(), v1.end(), out);
cout << endl;
push_heap(v1.begin(),v1.end());
// コンテナの内容を出力する
cout << "push_heap後" << endl;
copy(v1.begin(),v1.end(),out);
cout << endl;
push_heap(v1.begin(),v1.end());
// コンテナの内容を出力する
cout << "push_heap後" << endl;
copy(v1.begin(),v1.end(),out);
cout << endl;
sort_heap(v1.begin(),v1.end());
// コンテナの内容を出力する
cout << "sort_heap後" << endl;
copy(v1.begin(),v1.end(),out);
cout << endl;
return 0;
}
実行結果は次の通りです。
5 4 3 1 2
push_heap後
4 2 3 1 5
push_heap後
5 4 3 1 2
sort_heap後
1 2 3 4 5