【发布时间】:2013-06-07 22:58:59
【问题描述】:
向我解释如何构建优先级队列以及为什么必须这样构建,就好像我对优先级队列的经验的限制是知道队列是什么(我一生中从未使用过)。
当我在看这个网站时: http://comsci.liu.edu/~jrodriguez/cs631sp08/c++priorityqueue.html
priority_queue<Time, vector<Time>, CompareTime> pq;
我知道 Time 是为了让你有一个 Times 队列,比较 Time 决定了将时间放入队列的优先级,但为什么 vector<Time> 需要在构造函数中?
关于 Dijkstra: 我将图实现为节点向量,每个节点包含该向量中所有邻居位置的列表),所以它看起来像这样:
class Node {
protected:
string name;
int value;
list<int> nodes
}
我将如何实现 Dijkstra 的这一部分:
for each vertex v in Graph:
dist[v] := infinity ;
previous[v] := undefined ;
对于 dist[v] = infinity,我假设我将每个节点的值设置为无穷大,但是什么变量可以让我这样做呢?而对于previous[v],undefined是什么意思?
【问题讨论】:
-
用于无限结帐
limit.h或-1或任何其他未使用的数字/字符串标识符。如果您使用双打 stackoverflow.com/a/8640726/1031417 -
Vector
标签: c++