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>>