#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
vector<int> v1;
double dim[]={1,2,3,4,5,6,8,7};
int cnt=sizeof(dim)/sizeof(double);
v1.assign(dim,dim+cnt); //初始化v1
copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",")); //显示v1
cout<<endl;
make_heap(v1.begin(),v1.end()); //创建堆,v1成为了堆
copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",")); //显示堆
cout<<endl;
pop_heap(v1.begin(),v1.end()); //将堆的最大值调整到最后
copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",")); //显示堆
cout<<endl;
v1.pop_back(); //弹出v1中最后的元素(即堆中的最大值)
copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",")); //显示堆
cout<<endl;
v1.push_back(11); //插入元素
push_heap(v1.begin(),v1.end()); //改变插入元素的位置,使其符合堆的定义
copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",")); //显示堆
cout<<endl;
sort_heap(v1.begin(),v1.end()); //对堆中元素进行排序,结束后v1就不再是堆了
copy(v1.begin(),v1.end(),ostream_iterator<int>(cout,",")); //显示,vector已经不是堆了
cout<<endl;
return 0;
}