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

时间:2015-03-11 11:25:59

标签: c++ c++11 stl containers comparator

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

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

2 个答案:

答案 0 :(得分:2)

只需致电constructor

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

}

答案 1 :(得分:0)

你只需要调用它:

c(valuetocompare1, valuetocompare2);

这很简单。