簡體   English   中英

std :: out_of_range錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM