我需要基于优先级队列实现我自己的 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 loop 意味着它是空语句,但如果我评论第二个 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/