我需要基于优先级队列来实现自己的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/

10-11 16:57