我正在尝试在由 Vec3f 组成的 vector 中执行此操作:
for (size_t i = 0; i < (mPoints.size() - 10) ; i++) {
glVertex3f(mPoints[i]);
}
但我总是遇到运行时错误 EXC_BAD_ACCESS ... 如果我使用 int 而不是 size(),我也会遇到同样的错误。相反,如果我只是简单地使用 size() 而不做减法,它工作正常......
这是怎么回事?
最佳答案
听起来您可能遇到了 vector 中的元素少于 10 个的问题。因此,当您从无符号值中减去 10 时,实现可能会环绕并为您提供一个非常大的数字(基本上是 max - 10)。因此,您尝试迭代越过 vector 的边界。
试试下面的方法
for (size_t i = 0; i + 10 < vector.size(); i++) {
glVertex3f(mPoints[i]);
}
关于c++ - 在 for 循环中限制 vector.size(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8028567/