我正在实现 Dijkstra 的算法,我想使用 STL 的“priority_queue”来加快编码过程,但是我尝试用 C++ 编码时经常出现这种情况,我对该语言缺乏理解正在减慢我的速度。我在http://www.cplusplus.com/reference/stl/priority_queue/priority_queue/找到了这个例子,但不明白下面是做什么的:
// constructing priority queues
#include <iostream>
#include <queue>
using namespace std;
class mycomparison
{
bool reverse;
public:
mycomparison(const bool& revparam=false)
{reverse=revparam;}
bool operator() (const int& lhs, const int&rhs) const
{
if (reverse) return (lhs>rhs);
else return (lhs<rhs);
}
};
int main ()
{
int myints[]= {10,60,50,20};
priority_queue<int> first;
priority_queue<int> second (myints,myints+4);
priority_queue< int, vector<int>, greater<int> > third (myints,myints+4);
// using mycomparison:
priority_queue< int, vector<int>, mycomparison > fourth;
typedef priority_queue<int,vector<int>,mycomparison> mypq_type;
mypq_type fifth (mycomparison());
mypq_type sixth (mycomparison(true));
return 0;
}
更具体地说,'bool operator() (const int& lhs, const int&rhs) const' 是让我绊倒的原因。其余的我都很好。我认为它重载了一个运算符,但“operator()”对我来说毫无意义。任何帮助,将不胜感激。