需要头文件 #include<algorithm>
常用的三个函数 make_heap(),pop_heap(),push_heap(),sort_heap().
make_heap()
函数原型: void make_heap(first_pointer,end_pointer,compare_function).
前两个参数是迭代器的范围,第三个参数是比较函数,默认为最大堆
pop_heap()
函数原型: void pop_heap(first_pointer,end_pointer,compare_function)
需要注意的是此函数并不是真的把最顶的元素删除,而是把此元素移动到最后一个位置,然后到剩余的元素重新建堆
push_heap()
加入一个元素到堆中
sort_heap()
对堆中元素进行排序
示例程序:
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <iterator>
using namespace std;
int main()
{
int a[6]={5,3,12,6,34,78};
vector<int> vc;
vc.assign(a,a+6);
make_heap(vc.begin(),vc.end());
cout<<"The heap element"<<endl;
for(vector<int>::iterator it=vc.begin();it!=vc.end();++it)
cout<<*it<<" ";
cout<<endl;
pop_heap(vc.begin(),vc.end());
cout<<"After pop the element"<<endl; //最大元素已在末尾
for(vector<int>::iterator it=vc.begin();it!=vc.end();++it)
cout<<*it<<" ";
cout<<endl;
sort_heap(vc.begin(),vc.end(),less<int>());
cout<<"After sort the heap(min_heap)"<<endl;
for(vector<int>::iterator it=vc.begin();it!=vc.end();++it)
cout<<*it<<" ";
system("pause");
return 0;
}