我无法理解 Dijkstra算法的这一部分。我希望逐行理解这部分代码。
代码:
bool operator < (const DATA &p) const { return p.dist > dist; }
我掌握了c / c ++代码的基本知识。
答案 0 :(得分:1)
bool operator < (const DATA &p) const {
return p.dist > dist;
}
这比<
运算符重载少。
您传递的DATA &p
前缀为const
,这意味着p
通过引用传递,并且无法在函数内修改或更改。
以const {
开头的函数意味着方法内部不会有写/修改操作。
p.dist > dist
表示在推入priority_queue
后,两个Data
之间的比较将遵循此标准 - Data
较小 < / strong> dist
将首先出现在优先级队列中,而Data
的长度为dist
。这听起来很矛盾,但这是正确的,因为priority_queue
默认为最大堆。