[英]std::out_of_range error
我正在使用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;
}
}
}
}
但是當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
。
您需要將循環的條件更改為<
,而不是<=
。
for (int i = 0; i < x_captured.size(); i++)
{
for (int j = 0; j < y_captured.size(); j++)
{
...
}
}
for (int i=0;i<=x_captured.size();i++)
{
for (int j=0;j<=y_captured.size();j++)
您應該將<=
更改為<
並再次嘗試。
名為Billy的示例數組:大小:5但最后一個索引是4.獲取它? :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.