堆的STL实现
Posted noip
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆的STL实现相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<iostream> #include<algorithm> #include<vector> bool cmp(int x,int y) { return x>y; } int main() { vector<int> a; int num,n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&num); a.push_back(num); } make_heap(a.begin(),a.end(),cmp); scanf("%d",&num); a.push_back(num); push_heap(a.begin(),a.end(),cmp); cout<<a[0]<<endl; pop_heap(a.begin(),a.end(),cmp); a.pop_back(); return 0; }
pop_heap(a.begin(),a.end(),cmp) 的功能只是将第一个元素放到最后,然后忽略最后一个元素的情况下再维护一遍堆
以上是关于堆的STL实现的主要内容,如果未能解决你的问题,请参考以下文章