0

こんにちは、簡単な質問です。

ベクトルを特定のサイズに設定しました。最大スペースに達したら、そのベクトルを空にします。

私はこのコードを持っています:

vector<Point> Rightarm(20); 
    vector<Point> Leftarm(20);

    vector<Point>::const_iterator RightIter;
    vector<Point>::const_iterator LeftIter;

Rightarm.push_back(center);
    Leftarm.push_back(center1); 

    for(RightIter = Rightarm.begin(); RightIter != Rightarm.end(); ++RightIter)
    {
        circle(drawing, *RightIter, 3, Scalar(0,255,0), CV_FILLED); 
    }

    if(RightIter == Rightarm.end())
        {
            Rightarm.clear();
        }

    for(LeftIter = Leftarm.begin(); LeftIter != Leftarm.end(); ++LeftIter)
    {
        circle(drawing, *LeftIter, 3, Scalar(0,255,0), CV_FILLED);

    }

        if(LeftIter == Leftarm.end())
        {
            Leftarm.clear();
        }

私がこのコードで抱えている問題は、ベクターが毎回クリアされることです...サイズ制限の20に達した後にのみ空にしたい場所....

誰でもこれのどこが間違っているのかを見つけることができますか?

4

1 に答える 1

1

Leftarm.end() は常に Leftarm の最後を指すため、Vector は常にクリアされます。Leftarm に 6 つの要素がある場合、LeftIter は 6 番目の要素の末尾を指します。したがって、コードでは Leftarm ベクトルは常にクリアされます。その部分を含むコードを次のように変更します。

if(Leftarm.size()==20) //or >=20
{
    Leftarm.clear();
}
于 2013-03-27T19:32:23.403 に答える