[英]vector subscript out of range,Debug assertion failed
我正在为图形程序编写C ++代码,并且在其中必须收集所有坐标以稍后对其进行解析。我试图对向量使用相同的坐标,但返回以下错误:
调试断言失败
程序:....
文件:....
932行
表达式:向量下标超出范围
这是我的代码的一部分:
std::vector<float> coordinates;
//random code
if(dnew >= 0)
{
x = x + 1.0;
glPointSize(1.5f);
glColor3f(0.0,1.0,1.0);
glBegin(GL_POINTS);
glVertex2f(x, y);
glEnd();
dnew = dnew + a;
if(t == 1)
{
coordinates.push_back (x);
}
}
cout <<coordinates[1];
当我按重试时,将带我到stdthrow.cpp并指向以下行:
_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *message, const wchar_t *file, unsigned int line)
{
// report error and die
if(::_CrtDbgReportW(_CRT_ASSERT, file, line, NULL, message)==1)
{
::_CrtDbgBreak();
}
}
如果coordinates.size()<= i
,则可能引发此错误,将引发异常,该异常为您提供了您尝试访问向量范围之外的元素的信息。
您只需将一个元素推入坐标,因此唯一的有效索引是0
。 coordinates[1]
在向量的末尾。
此外,有两种情况可能完全阻止一个存在的push_back
发生,因此很可能是向量为空。 但是,您无条件访问向量的第二个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.