清除矢量空间

时间:2013-03-27 19:25:09

标签: c++

大家好快问一下:

我已将矢量设置为特定大小,我想要做的是在达到最大空间后清空该矢量。

我有这个代码:

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的大小限制后才能清空....

任何人都可以发现这个问题出在哪里......?

1 个答案:

答案 0 :(得分:1)

Vector总是被清除,因为Leftarm.end()总是指向Leftarm的结尾。如果Leftarm有6个元素,则LeftIter指向第6个元素的末尾。因此,在您的代码中,将始终清除左臂向量。使用以下代码更改您的代码,包括该部分:

if(Leftarm.size()==20) //or >=20
{
    Leftarm.clear();
}