矢量下标超出范围,调试断言失败
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
发生,所以很可能是,你的向量是空的。但是您可以无条件地访问向量的第二个元素。
相关文章:
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 使用扫描的调试断言失败
- 图片不显示,关闭时出错 --> 调试断言失败!表达式:is_block_type_valid(标头>_block_use)
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 调试断言失败的缓冲区!=nullptr
- 获取有关调试断言失败的错误:表达式:"(_Ptr_user &(_BIG_ALLOCATION_ALIGNMENT -1)) == 0" &&0
- 在Win10上使用带有Qt5的OpenCV3.0,调试断言失败
- C++,弹出调试断言失败窗口,我得到矢量迭代器不兼容的错误运行时
- C++ 调试断言失败,无效的空指针
- 如何在 Linux 上强制执行矢量下标超出范围的调试断言
- 调试断言仅在某些情况下失败?C++
- 调试断言失败
- 映射/集迭代器不可取消引用 (C++) - 调试断言失败
- std::vector<std::vector<int>>:调试断言失败。C++矢量下标超出范围保留内存
- 使用 Microsoft VS 编写程序C++,但我在这里收到调试断言消息.它可以在 cpp.sh 上运行,repl.i
- 字符串抛出矢量下标调试断言
- 使用调试断言时避免 ODR 冲突
- MFC DDX_RADIO会导致调用dodataexchange(dlgdata.cpp行286)时导致调试断言失败
- 无法在谷歌测试中捕获调试断言(死亡测试不满足它)
- 调试断言失败的矢量下标超出C 范围