大家好快问一下:
我已将矢量设置为特定大小,我想要做的是在达到最大空间后清空该矢量。
我有这个代码:
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的大小限制后才能清空....
任何人都可以发现这个问题出在哪里......?
答案 0 :(得分:1)
Vector总是被清除,因为Leftarm.end()总是指向Leftarm的结尾。如果Leftarm有6个元素,则LeftIter指向第6个元素的末尾。因此,在您的代码中,将始终清除左臂向量。使用以下代码更改您的代码,包括该部分:
if(Leftarm.size()==20) //or >=20
{
Leftarm.clear();
}