其他分享
首页 > 其他分享> > 优先队列中实现随机点删除

优先队列中实现随机点删除

作者:互联网

priority_queue可以通过继承来自定义随机点删除(优先队列默认为最大堆)

template<typename T>
class custom_priority_queue : public std::priority_queue<T, std::vector<T>>
{
    public:
        bool remove(const T& value) {
            auto it = std::find(this->c.begin(), this->c.end(), value);
            if (it != this->c.end()) {
                this->c.erase(it);
                std::make_heap(this->c.begin(), this->c.end(), this->comp);
                return true;
            }
            else return false;
        }
};

可通过priority_queue中的protected成员c和comp来进行子类的继承引用。

标签:std,queue,end,删除,队列,comp,value,priority,随机
来源: https://www.cnblogs.com/Bosson/p/15726816.html