清除向量空间

Clearing a Vector space

本文关键字:空间 向量 清除      更新时间:2023-10-16

大家好,一个简短的问题:

我已经设置了一个向量的大小,我想做的是一旦它达到最大空间就清空这个向量。

我有这个代码:

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....

后才被清空

谁能发现我在哪里做错了这个…?

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

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