C++ boost::heap::priority\u队列与std::priority\u队列的比较器

C++ boost::heap::priority\u队列与std::priority\u队列的比较器,c++,boost,std,C++,Boost,Std,我正在尝试为自定义边缘类设置一个优先级队列,在该队列中,边缘将通过其权重进行比较 class Edge { public: int index; double weight; std::pair<int, int> vertices; Edge(int i, double w, int start, int end) { index = i; weight = w; vertices.first = start; vertices.

我正在尝试为自定义边缘类设置一个优先级队列,在该队列中,边缘将通过其权重进行比较

class Edge 
{
public:
    int index;
    double weight;
std::pair<int, int> vertices;

Edge(int i, double w, int start, int end)
{
    index = i;
    weight = w;
    vertices.first = start;
    vertices.second = end;
}
}; 
然而,我随后意识到,
std::priority_queue
不提供迭代器。这是我非常想要的特性,所以我决定切换到
boost::heap::priority\u队列。我知道,
boost::heap::priority_队列
有一个构造函数,它将设置一个自定义比较器。然而,我找不到任何例子来解释如何最好地传递函数。显然,我不能使用与
std::priority\u队列
相同的语法

我试过了

EdgeCompare comparator;
boost::heap::priority_queue<Edge> queue2(comparator.operator);
EdgeCompare比较器;
boost::heap::priority_队列queue2(comparator.operator);
但是我得到一个错误,告诉我指定一个操作符

我还尝试重命名该函数,但随后出现一个错误,告诉我指向函数的指针只能用于调用该函数


声明和通过比较器的正确方法是什么

是的,选项界面有点文档不足。您可以指定如下选项:

boost::heap::priority_queue<Edge, boost::heap::compare<EdgeCompare>>
boost::heap::priority\u队列
boost::heap::priority_queue<Edge, boost::heap::compare<EdgeCompare>>