void del(int x) {
     heapSwap(x, size);
     index.erase(heap[size].key);
     --size;
     heapUp(x);
     heapDown(x);
 }
Пример #2
0
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);
    }
}
Пример #4
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);
}