在for循环中限制vector.size()

时间:2011-11-06 16:43:07

标签: c++

我正在尝试在由Vec3f组成的向量中执行此操作:

for (size_t i = 0; i < (mPoints.size() - 10) ; i++) {
    glVertex3f(mPoints[i]);
}

但我总是得到运行时错误EXC_BAD_ACCESS ...如果不是size()我使用int我得到相同的错误。如果相反我只使用size()而没有减法,它可以正常工作......

发生了什么事?

1 个答案:

答案 0 :(得分:9)

听起来你可能遇到的问题是向量中的元素少于10个。因此,当你从无符号值中减去10时,实现可能会回滚并给你一个非常大的数字(基本上是max - 10)。因此,您尝试迭代超过向量的边界。

请尝试以下

for (size_t i = 0; i + 10 < vector.size(); i++) {
  glVertex3f(mPoints[i]);
}