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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/AptX395/article/details/89968788

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


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

#include <queue>

/* 自定义类实现对于 STL 的优先队列的查找方法 */
template<class T, class Container = std::vector<T>, class Compare = std::less<typename Container::value_type> >
class My_Priority_Queue : public std::priority_queue<T, Container, Compare>
{
public:
    typedef typename std::priority_queue<T, Container, Compare>::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<Node> my_queue;

猜你喜欢

转载自blog.csdn.net/AptX395/article/details/89968788