0001 template <typename T> struct ComplHeap : public PQ<T>, public Vector<T> { //完全二叉堆 0002 ComplHeap(T* A, Rank n) : Vector(A, 0, n) { heapify(_elem, n); } //批量构造 0003 void insert(T); T delMax(); //插入与删除 0004 T& getMax() { return _elem[0]; } //读取优先级最高的元素 0005 }; //ComplHeap 0006 auto PARENT = [](auto i) { return (i - 1) >> 1; }; //[i]的父节点(可能越界) 0007 auto LC = [](auto i) { return 1 + (i << 1); }; //[i]的左孩子(可能越界) 0008 auto RC = [](auto i) { return (1 + i) << 1; }; //[i]的右孩子(可能越界)