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

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

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