如何在自己的类中使用默认比较器

How to use default comparator in own class?

本文关键字:默认 比较器 自己的      更新时间:2023-10-16

我想创建自己的数据容器,如STL-containers

template <class priorityType = size_t, class Compare = std::less<priorityType>>
class task_queue
{
public:
    task_queue(Compare c = Compare())
    {
    }
private:
    std::priority_queue<priorityType, std::vector<priorityType>, Compare> tasks_id;
};
int main() {
    struct foo
    {
        int a;
    };
    struct foo_compare
    {
        bool operator()(const foo& lhs, const foo& rhs) const {
            return lhs.a < rhs.a;
        }
    };
    task_queue<foo, foo_compare> queue{ foo_compare() };
}

我想在 PQ 中使用传递给构造函数comparator tasks_id。我该怎么做?

只需调用正确的构造函数。

task_queue(Compare c = Compare()) : tasks_id(c)
{
}

你只需要调用它:

c(valuetocompare1, valuetocompare2);

就这么简单。