它甚至不执行推送操作。它不调用推送函数,只是构造函数调用和分段错误。为什么会这样?
class Heap {
vector<int> v;
void Heapify(int x) {
int mi = x;
int l = 2 * x;
int r = 2 * x + 1;
if (v[mi] > v[l] && l < v.size()) {
mi = l;
}
if (v[mi] > v[r] && r < v.size()) {
mi = r;
}
if (mi != x) {
swap(v[mi], v[x]);
Heapify(mi);
}
}
public:
Heap() {
v[0] = -1;
}
void push(int x) {
v.push_back(x);
int i = v.size()-1; …Run Code Online (Sandbox Code Playgroud)