void del(int x) { heapSwap(x, size); index.erase(heap[size].key); --size; heapUp(x); heapDown(x); }
GramNode* GramHeap::pop() { if(_used == 0) return NULL; GramNode* r = _data[0]; _data[0] = _data[_used - 1]; _used--; heapDown(0); return r; }
void FastMarchingMethod::heapRemoveMin() { if (size_ > 0) { size_--; std::swap(indexOf(narrowBand_[0]), indexOf(narrowBand_[size_])); std::swap(narrowBand_[0], narrowBand_[size_]); heapDown(0); } }
void GramHeap::insert(GramNode* node) { if(_used < _size) { _data[_used] = node; heapUp(_used); _used++; return; } if(gramNodeCmp(node, _data[0]) < 0) return; //! just abandom older _data[0] _data[0] = node; heapDown(0); }