我需要基于优先级队列来实现自己的Dijkstra算法版本,并且在搜索一些有关该站点的站点时,我看到了一种确实有效的算法,但带有奇怪的for循环语句:
int i,j,n;
cin >> n; //number of vertexes
bool *QS = new bool [n];
//whole QS is set to false here
for(i = 0; i < n; i++) {
for(j = 0; QS[j]; j++);
for(u = j++; j < n; j++)
if(!QS[j] && (d[j] < d[u])) //d[i] is table of distances
u = j;
QS[u] = true;
//some code
}
我知道
;
after循环意味着它是空语句,但是如果我注释第二个for-loop
,该程序将停止工作,因此实际上意味着某些事情。我相信这个u = j++
的目的就像是u = j+1
的开始形式,但我不太确定。 最佳答案
for(j = 0; QS[j]; j++);
用作j=0; while(QS[j])j++;
即找到QS[j]
为假的第一个j
关于c++ - for循环后的分号是什么意思?为什么在第一循环语句中有一个j++?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55815414/