c++ - 为什么这个循环是无限的?

标签 c++ vector indexing size-t

我有一些代码用于绘制应该绘制的多边形边,例如,在具有顶点 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/

相关文章:

c++ - C/C++ 中的 JSON <-> XML

c++ - URLDownloadToFile 到同一目录

MySQL 索引 : inverted or forward

c++ - Cmake vs 命令行 : Error in Cmake, 不在命令行

c++ - std::vector::erase 与 "swap and pop"

C++ 运行时错误 : free(): invalid next size (fast)

c++ - 将 const int std::array 的 n 个元素复制到一个 int vector 中。怎么做?

java - JAVA 中的逻辑索引

python - 如果维度可能变化,如何访问数组元素?

c++ - 试图拒绝负数并让人们选择另一个但它完成了