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

标签 c++

我正在尝试在由 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/

相关文章:

c++ - 如何在 C++ 或 Winapi 中转移同步对象的所有权?

c++ - 在c++中修改时间程序时出现逻辑错误

c++ - 对容器中所有元素的成员函数结果求和的最佳方法是什么?

c++ - 使用 QXmlStreamReader C/Qt 解析 XML 文件

c++ - 我的计算器程序 C++ 出现错误

c++ - 可以这样使用函数指针吗?

c++ - 不使用STL函数写一个随机函数

c++ - 如何获取点 vector 并仅获取这些点中的 'y'

c++ - 从坐标 vector 中提取坐标并保存到文件

c++ - 为什么要插入一个? (问号)就在 map 条目之前?