我有一些代码用于绘制应该绘制的多边形边,例如,在具有顶点 0、1 和 2 的三角形中,边 (0, 1)、(1, 2) 和 (2, 0).我以为我可以这样完成:
for(size_t j = 0, k = 1; j <= vertices.size()-1; j++, k++){
if(j == vertices.size()-1){k = 0;} //For j to k final edge
...
//draw edges, etc.
...
}
...但这让k值爆炸成死循环。我仔细看了看,怀疑问题可能出在我的索引中,但如果一切都取决于 j,我会认为 vertices.size() 可能搞砸了。我是否遗漏了这段代码中的某些内容,或者我应该更仔细地查看实际的顶点 vector ?
最佳答案
你不需要数到 k :
size_t const count = vertrices.size()
for(size_t j = 0; j < count; j++) {
size_t k = (j + 1) % count;
// draw
}
这样 k
就是 j+1
除非 j 是最大值,在这种情况下它是 0。
关于c++ - 为什么这个循环是无限的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916911/