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

How to use default comparator in own class?

我想创建自己的数据容器,如 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() };
}

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

直接调用constructor.

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

}

你只需要调用它:

c(valuetocompare1, valuetocompare2);

就这么简单