C++堆的使用
在看topk问题的时候看到使用堆可以达到nlogk复杂度的效果,就总结一些堆在C++里面的使用方法。
首先堆的使用需要包含这个头文件:
#include <algorithm>
使用vector构建堆:
vector<int> a;
push_heap(a.begin(), a.end());
其中默认是小顶堆
如果想把堆顶的元素删除可以:
pop_heap(a.begin(), a.end());
这样,堆顶的元素就自动放在了vector的末尾,可以使用
a.pop_back()
将这个元素在vector删除掉,然后使用
pop_heap(a.begin(),a.end())
重新建堆