SB2*_*B26 4 c++ opencv std out
我正在使用Linux Ubuntu中的opencv中的以下代码.x_captured和y_captured是"int"类型向量.两个向量的大小是18.
for (int i=0;i<=x_captured.size();i++)
{
for (int j=0;j<=y_captured.size();j++)
{
if (i!=j)
{
if (((x_captured.at(j)-x_captured.at(i))<=2) &&
((y_captured.at(j)-y_captured.at(i))<=2))
{
consecutive=consecutive+1;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当i = 0且j = 18之后,它会抛出以下错误:
在抛出'std :: out_of_range'的实例后调用终止what():vector :: _ M_range_check
问题是,当有效索引为0到N-1时,您正在使用从0到N的循环.这就是您在最后一次迭代时获得异常的原因:std::vector::at执行绑定检查,如果超出范围,std::out_of_range则抛出a.
你需要改变你的循环条件<,而不是<=.
for (int i = 0; i < x_captured.size(); i++)
{
for (int j = 0; j < y_captured.size(); j++)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)