思路:
建立一个最大堆,如果新添加的元素小于堆顶元素,pop_heap出去堆顶元素,然后push_heap进去新添加的元素;否则,什么也不用做。
同理,用STL heap寻找最小的k个值则需要建立最小堆,操作正好反过来。
注意:make_heap、pop_heap以及push_heap中的_Compare参数要保持一致,否则会失败。
代码实现(以“寻找最小的10个值”为例):
#include<iostream>
#include<vector>
#include<algorithm>
#include <time.h>
using namespace std;
int RandomInRange(int start, int end) {
if (start >= end) {
throw new std