C++ 优先队列的查找功能的简单实现方法


本文已经发布在我的个人网站 jerrydeng.site 上啦,欢迎访问!


C++ 的 std::priority_queue 没有查找的功能,但某些情况下又确实需要使用查找,这里介绍一下查找功能的简单实现方法:

#include 

/* 自定义类实现对于 STL 的优先队列的查找方法 */
template, class Compare = std::less >
class My_Priority_Queue : public std::priority_queue
{
public:
    typedef typename std::priority_queue::container_type::const_iterator const_iterator;
    
    /* 查找队列中是否存在 t,若存在则返回指向该元素的迭代器,否则返回 std::priority_queue::c.cend() */
    const_iterator find(const T &t) const
    {
        auto first = this->c.cbegin();
        auto last = this->c.cend();

        while (first != last)
        {
            if (*first == t)
                return first;

            ++first;
        }

        return last;
    }
};

/* 用法,Node 为自定义类型 */
My_Priority_Queue my_queue;

你可能感兴趣的:(Tutorial)