C++ STL 堆(heap)的初始化及其正确使用

时间:2025-04-16 11:58:16
#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); (dim,dim+cnt); //初始化v1 copy((),(),ostream_iterator<int>(cout,",")); //显示v1 cout<<endl; make_heap((),()); //创建堆,v1成为了堆 copy((),(),ostream_iterator<int>(cout,",")); //显示堆 cout<<endl; pop_heap((),()); //将堆的最大值调整到最后 copy((),(),ostream_iterator<int>(cout,",")); //显示堆 cout<<endl; v1.pop_back(); //弹出v1中最后的元素(即堆中的最大值) copy((),(),ostream_iterator<int>(cout,",")); //显示堆 cout<<endl; v1.push_back(11); //插入元素 push_heap((),()); //改变插入元素的位置,使其符合堆的定义 copy((),(),ostream_iterator<int>(cout,",")); //显示堆 cout<<endl; sort_heap((),()); //对堆中元素进行排序,结束后v1就不再是堆了 copy((),(),ostream_iterator<int>(cout,",")); //显示,vector已经不是堆了 cout<<endl; return 0; }

相关文章