📜  如何在 C++ 中的优先级队列中使用比较器(1)

📅  最后修改于: 2023-12-03 14:52:15.525000             🧑  作者: Mango

如何在 C++ 中的优先级队列中使用比较器

在 C++ 中,优先级队列是一个很有用的数据结构。但是有时候我们需要对元素进行排序,这时候就需要使用一个比较器。在本文中,我将介绍如何在 C++ 中的优先级队列中使用比较器。

什么是比较器?

比较器是一个函数对象,用于比较两个对象的大小关系。在 C++ 中,比较器通常被用来定义元素的排序方式。

如何使用比较器?

在 C++ 中,可以通过定义一个比较器类来实现元素的排序。比较器类必须实现一个括号运算符(operator()),接受两个参数,并返回一个布尔值。如果第一个参数应该排在第二个参数之前,则返回 true;否则返回 false。

class MyComparator {
public:
    bool operator() (const int& a, const int& b) const {
        return a > b;
    }
};

priority_queue<int, vector<int>, MyComparator> pq;

在上面的代码中,我们定义了一个名为 MyComparator 的比较器类,用于对整数排序。在优先级队列中,我们需要指定比较器类作为第三个参数。

什么是默认的比较器?

在 C++ 中,如果我们没有指定一个比较器,那么默认的比较器是 std::less。std::less 对象只是简单地使用运算符 < 来比较两个元素。

priority_queue<int> pq;

// Same as:
priority_queue<int, vector<int>, less<int>> pq;
总结

使用比较器可以让我们更加灵活地对元素进行排序。在 C++ 中,我们可以通过定义一个比较器类,并将其作为优先级队列的第三个参数来实现元素的排序。如果我们没有指定比较器,那么将会使用默认的比较器 std::less。