我正在阅读《竞争性编程 1》一书中的 Dijkstra 算法。在实现程序中,他们写了这样的内容:
#define pair<int,int> ii;
priority_queue< ii,vector<ii>,greater<ii> > pq ;
Run Code Online (Sandbox Code Playgroud)
如果我们将整数 s 作为源,则实现显示像这样推送对 (cost,source)(节点编号从 1 到 n):
pq.push(ii(0,s)) ;
Run Code Online (Sandbox Code Playgroud)
我的问题是我们正在将一对成本和节点放入优先级队列中。但是其他两个参数(即向量和更大)在priority_queue声明中做什么呢?
priority_queue< ii,vector<ii>,greater<ii> > pq ;
Run Code Online (Sandbox Code Playgroud)
我尝试声明类似的内容:
priority_queue< ii > pq ;
Run Code Online (Sandbox Code Playgroud)
并且代码有效(在我尝试过的那些测试用例上)。
谁能告诉我该声明的含义:
priority_queue< ii,vector<ii>,greater<ii> > pq ;
Run Code Online (Sandbox Code Playgroud)
上面的声明和上面的声明有什么区别
priority_queue< ii > pq ;
Run Code Online (Sandbox Code Playgroud)
宣言 ?